我有一个Rails应用程序,其中有以下模型-

城市,酒店,餐厅,公园。

协会是这样的-

class City < ActiveRecord::Base

 has_many :hotels
 has_many :restaurants
 has_many :parks

end


我想查找所有至少拥有一个酒店或餐厅或公园的城市。

如何编写单个查询以获取此类城市?

最佳答案

对于Rails 5,您可以像下面这样使用

cities = City.includes(:hotels, :restaurants, :parks)
cities = ((cities.where.not(hotels: {id: nil})).or(cities.where.not(restaurants: {id: nil})).or(cities.where.not(parks: {id: nil})))


对于较低版本的rails,您需要使用arel_table

关于mysql - 如何基于多个关联模型查询模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39292750/

10-13 04:52