我是rails和activerecord的新手,这就是为什么有时我会遇到像这样的问题。 我有mysql查询:
select m.name, m.id, count(*) as count
from cars c
left join manufacturers m on c.manufacturer_id = m.id
group by c.manufacturer_id
每行返回3个值
如何使用rails activerecord orm
重写它 其他信息:car belongs_to manufacturer
manufacturer has_many cars
答案 0 :(得分:1)
是的,你可以:
Manufacturer.select("m.name, m.id, count(*) as count").
joins(:cars).group(:manufacturer_id)
但是您也可以在制造商属性上使用计数器缓存“cars_count”,或者使用ruby(而不是使用mysql)计数:
Manufacturer.includes(:car).each {|manufacturer| manufacturer.cars.size}
答案 1 :(得分:-1)
您不以这种方式执行查询。您不查询表而是查询对象:
Car.count # the count on your query
Car.find_each do |car|
# do something with car.manufacturer.name
# and car.manufacturer.id
end