college.rb
has_many :tenant_colleges
tenant_college.rb
belongs_to :college
我想获得大学的属性名称以及所有tenant_college属性
我做
TenantCollege.select("tenant_colleges.*, colleges.name").joins(:college)
但它没有提供大学名称
答案 0 :(得分:3)
尝试eager loading associations,就像这样
tenant_colleges = TenantCollege.includes(:colleges)
tenant_colleges.each do |tc|
puts tc.college.name
end
修改强>
就像@lcguida建议最好使用两个单独的查询。如果您想在单个查询中获取,请像往常一样使用.select
方法
TenantCollege.joins(:colleges).select("tenant_colleges.*, colleges.name")
或强>
TenantCollege.joins("LEFT JOIN colleges ON tenant_colleges.id = colleges.tenant_id")
.select('tenant_colleges.*', 'colleges.name')
答案 1 :(得分:1)
- 我想获得大学的属性名称以及所有tenant_college 属性
当我浏览belongs-to-association-reference和has-many-association-reference时,没有可用的构建方法。但它很容易与小黑客。
class College < ActiveRecord::Base
def get_college_with_tenant_colleges
_ary = {}
_ary[:user] = self
_ary[:tenant_colleges] = self.tenant_colleges
_ary
end
end
但要确保此方法的r eturn type
哈希而不是ActiveRecord
。因此,为了获得ActiveRecord
的所有方法,您需要iterate
。
希望这能帮到你!
答案 2 :(得分:0)
我很好奇你为什么不使用原始SQL这样的东西,但下面的代码应该有用:
TenantCollege.joins(:college).pluck("tenant_colleges.*", "colleges.name")
答案 3 :(得分:-1)
您可以通过为sql列设置特定名称来实现此目的:
ViewControllers