Rails-使用2个模型合并查找

时间:2012-03-29 17:31:23

标签: ruby-on-rails model

我想用2个模型构建一个rails请求。 我认为这很简单,但我不想自己做一个循环。

我在我的乡村模特:

  def self.find_for_user(user_id)
    wines = Wine.where("user_id = ?", user_id).group(:country_id)

    where("countries.id IN ?", wines.map())
  end

我想根据第一个要求获得所有国家(按国家分组的葡萄酒,我只需要这些国家)

我想我可以在一行中执行此操作,其中放置map()或其他指令。我只需要获得所有country_id字段的葡萄酒。

感谢。

2 个答案:

答案 0 :(得分:0)

如果您想要的是所有拥有特定用户葡萄酒的国家/地区,您可以在SQL中执行此操作:

where("countries.id in (select country_id from wines where wines.user_id = ?)", user_id)

答案 1 :(得分:0)

假设您在葡萄酒和国家之间建立了关联(即。has_many :wines in country.rb),我认为这正是您所寻找的:

def self.find_for_user(user_id)
  joins(:wines).where('wines.user_id = ?', user_id).uniq
end