【发布时间】:2015-01-10 03:12:08
【问题描述】:
我正在使用基于 has_many 关系返回左外连接的 Rails 代码:
@results = MyModel.where(:model_id => 123).includes(:foos).all
MyModel 有这种关系:
has_many :foos, :as => :fooed, :conditions => 'foo_number IS NOT NULL', :order => "foo_number asc", :dependent => :destroy
这将创建一个左外连接,它选择父表 (MyModel) 中的所有列和子表 (foos) 中的所有列。
如何选择在子表中为此联接选择哪些列?我可以列出要选择的列或要忽略的列,只要结果查询不包含包含大量数据的特别大的列。在这种情况下,不能在加入后将其过滤掉。
理想情况下,我希望结果仍然是左外连接,而不是执行许多 SQL 查询。
我尝试过:
@results = MyModel.where(:model_id => 123).includes(:foos).select("childcol1, childcol2").all
但这根本不会改变生成的查询。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 rails-activerecord