如何在Ruby on Rails中编写此查询?在选择
中查询SELECT id,
company_id,
(SELECT name
FROM companies
WHERE id = referred_to_id) AS name
FROM referrals
WHERE company_id = 21
答案 0 :(得分:3)
在Rails中,您不必担心像这样编写SQL。 ActiveRecord
处理所有简单SQL命令的创建。
只要您在模型中正确设置了关系,下面的代码就会为您提供公司名称。
@referral = Referral.find(21)
@referral.company.name
答案 1 :(得分:2)
@referrals = Referral.select('id, company_id, (SELECT name FROM companies WHERE id = referred_to_id) AS name').where(company_id: 21)
答案 2 :(得分:1)
@referral = Referral.joins(:company).select([:id,:company_id]).where(id: 21).first
然后使用
@referral.id
@referral.company_id
@referral.company.name
答案 3 :(得分:0)
使用activerecord,您可以通过以下方式实现:
referral = Referral.find(21)
referral.company.name
但如果你真的想要面对那些属性,你可以使用:
record = Referral.where("referrals.company_id = 21").joins("left join companies on referrals.referred_to_id = companies.id").select("referrals.id , referrals.company_id, companies.name as name").first
现在您可以访问该特殊对象的属性:
record.id
record.company_id
record.name