在我的Ruby on Rails应用程序中,我有两个模型:
class CuratorGroup < ActiveRecord::Base
has_and_belongs_to_many :art_objects, join_table: "curator_groups_art_objects"
end
class ArtObject < ActiveRecord::Base
scope :currently_displayed, -> { where(status: "Currently On Display") }
has_and_belongs_to_many :curator_groups, join_table: "curator_groups_art_objects"
end
不,我想写一个范围,让我回复所有至少有一个艺术品对象的策展人群体? 我怎么能这样做?
答案 0 :(得分:1)
这应该有效。在我自己的项目中尝试过类似的关联。我希望我在没有错别字的情况下将它翻译成你的项目。
CuratorGroup.joins('LEFT OUTER JOIN curator_groups_art_objects ON curator_groups_art_objects.curator_group_id = curator_groups.id').group('curator_groups.id').having('count(curator_groups_art_objects.curator_group_id) > 0').all
答案 1 :(得分:0)
试试这个:
scope :has_art, -> { :includes => :art_objects, :conditions => { "curator_groups_art_objects.art_object_id != nil"} }