3

この場所を他の多くのことを参考に使用した後の最初のSO質問..私は緊張しています。

DataMapper ..たとえばブログモデルを使用します(投稿、コメントなど- http://datamapper.org/docs/associations.html)コメントのないブログ投稿を取得する方法を試しています..

Post.all(:comments => { :comment => nil }) のようなもの

多くの幸運があります:(

ここで、複雑なレポートクエリの場合は SQL にドロップダウンするのが最善であることを読みましたが、確かにこれを行う方法があるのではないでしょうか?

前もって感謝します。

4

1 に答える 1

3

Post モデルにカウンター キャッシュ (たとえば "comments_count" と呼ばれる) がない場合、これは遅くなります。しかし、とにかくここにあります:

Post.find(:all, :include => :comments).select { |post| post.comments.empty? }

カウンター キャッシュ ソリューションを使用することをお勧めします (ただし、これには、スキーマのリファクタリングと、移行中にカウンターを 1 回更新することが含まれます)。

Post.all(:conditions => { :comments_count => 0 })

後者は、特に Rails 3 でははるかに効率的です (遅延クエリの原因)。

于 2010-02-10T21:52:10.537 に答える