我有一個通過連接模型建立的多對多關係。基本上,我允許人們在活動中表達興趣。如何使用ActiveRecord查找無關記錄?
class Activity < ActiveRecord::Base
has_many :personal_interests
has_many :people, :through => :personal_interests
end
class Person < ActiveRecord::Base
has_many :personal_interests
has_many :activities, :through => :personal_interests
end
class PersonalInterest < ActiveRecord::Base
belongs_to :person
belongs_to :activity
end
我現在想了解一下:在活動具有特定用戶不表示有興趣?這必須包括其他人感興趣的活動以及完全沒有興趣的活動。
成功(但inefficent)方法是兩個單獨的查詢:
(Activity.all - this_person.interests).first
我怎麼能整齊地表達的ActiveRecord此查詢?是否有一個抽象查詢的(可靠的,保存完好的)插件?
如果有人對關聯擴展插件或繼任者有任何想法,我會特別感興趣。 (rubyforge.org/projects/assocext) – 2009-07-28 16:27:40