【发布时间】:2015-11-02 17:39:43
【问题描述】:
我已经尝试解决这个问题一段时间了,但没有成功:(
我有2个模型类——ConfigurationKey和ConfigurationItem,如下:
class ConfigurationKey < ActiveRecord::Base
has_many :configuration_items
# this class also has a 'name' attribute
end
class ConfigurationItem < ActiveRecord::Base
belongs_to :app
belongs_to :configuration_key
end
我想在一个查询中获取所有具有特定“名称”属性的 ConfigurationKey,以及与其关联的 ConfigurationItem 的过滤子集。
我使用了以下命令:
configuration_key = ConfigurationKey.includes(:configuration_items).where(name: key_name, configuration_items: { app: [nil, app] })
但没有任何关联 ConfigurationItems 的 ConfigurationKeys 不会返回。
我认为 'includes' 子句或明确使用 'LEFT OUTER JOIN' 会使其工作,但它没有:/
是否有任何可能的方法来做到这一点,或者我必须使用 2 个查询 - 一个获取所有相关的 ConfigurationKey,另一个获取所有相关的 ConfigurationItems?
谢谢 ;)
【问题讨论】:
-
仅包括预加载关联模型使用
joins(:configuration_items)。 -
你的 Rails 版本是什么?
-
@matanco - 我尝试使用联接,但转换为 INNER JOIN,因此删除了与 ConfigurationItems 没有任何关联的 ConfigurationKey 条目。我也想包括这些条目:/
-
@itmammoth - 我正在使用 rails 4.2.4
标签: ruby-on-rails postgresql activerecord rails-activerecord