使用以下Rails模型:
class Group < ActiveRecord::Base
has_many :group_locations, :dependent => :restrict
has_many :locations, :through => :group_locations, :dependent => :restrict
end
class Location < ActiveRecord::Base
has_many :group_locations, :dependent => :destroy
has_many :groups, :through => :group_locations
end
class GroupLocation < ActiveRecord::Base
belongs_to :group
belongs_to :location
end
我正在尝试 查找 与字符串“group_list”中包含的多个组中至少一个相关联的所有位置(例如“1,2, 3,4,5" )。如果它是位置记录中的字段,我将在(#{group_list})* 中指定“ *字段”的条件。但是,如果我想要至少有一个位置的“group_location”,其中“group_id”在列表中(或者,一个“group”,其group_id在列表中),我该如何实现我的目标。
我知道如何使用纯SQL来实现它,但是你如何使用Rails呢?
答案 0 :(得分:0)
@taro你是对的。通过添加代码
开始joins(:group_locations).where("group_id in (?)", group_id_array)
然后我继续定义一个范围,以使它成为一个很好的包:
scope :locations_in_groups, lambda { |grparray| joins(:group_locations).where("group_id in (?)", grparray) }
感谢您的帮助。