【问题标题】:How i can write a query inside select in rails我如何在 Rails 中的 select 中编写查询
【发布时间】:2013-09-09 11:53:45
【问题描述】:
如何在 Ruby on Rails 中编写此查询?在 select 中查询
SELECT id,
company_id,
(SELECT name
FROM companies
WHERE id = referred_to_id) AS name
FROM referrals
WHERE company_id = 21
【问题讨论】:
-
欢迎来到 Stack Overflow!请阅读newbie manual 了解如何写出更好的问题。例如,您应该说明您拥有哪些模型以及您已经尝试过哪些模型。
-
标签:
ruby-on-rails
ruby
ruby-on-rails-3
activerecord
activemodel
【解决方案2】:
@referrals = Referral.select('id, company_id, (SELECT name FROM companies WHERE id = referred_to_id) AS name').where(company_id: 21)
【解决方案3】:
@referral = Referral.joins(:company).select([:id,:company_id]).where(id: 21).first
然后使用
@referral.id
@referral.company_id
@referral.company.name
【解决方案4】:
使用 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