mysql - 如何根据多个关联模型查询一个模型

标签 mysql ruby-on-rails activerecord model associations

我有一个 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/

相关文章:

mysql - mysql如何优化内查询

ruby-on-rails - Rails 试图创建嵌套路由

mysql - 这个 "_ifbk"约束在我的表中做什么?

ruby-on-rails - :conditions on a belongs_to association?的目的是什么

php - 如何在php搜索之前隐藏表格

C++ MFC 对话框 - 如何将连接应用到我的应用程序的所有对话框?

mysql - 在没有索引的情况下如何将列视为唯一?

php - 显示来自mysql数据库的图像问题

ruby-on-rails - 使用 REST API 从 Dynamics CRM 导入数据

ruby-on-rails-3 - Rails 3.1/mysql2 错误 : "MySQL server has gone away"