単純な関連付けを考えてみましょう...
class Person
has_many :friends
end
class Friend
belongs_to :person
end
ARelやmeta_whereに友達がいないすべての人を取得するための最もクリーンな方法は何ですか?
そして、has_many:throughバージョンはどうですか
class Person
has_many :contacts
has_many :friends, :through => :contacts, :uniq => true
end
class Friend
has_many :contacts
has_many :people, :through => :contacts, :uniq => true
end
class Contact
belongs_to :friend
belongs_to :person
end
私は本当にcounter_cacheを使いたくありません-そして私が読んだものからそれはhas_manyで動作しません:through
すべてのperson.friendsレコードをプルして、Rubyでループさせたくありません-meta_searchgemで使用できるクエリ/スコープが必要です
クエリのパフォーマンスコストは気にしません
そして、実際のSQLから離れるほど良い...