当手动变速器=真时,试图计算驾驶员的车辆数量。 (司机有很多汽车;汽车属于司机等)
我目前的代码:
<% @driver = Driver.find(1) %>
<% driver.cars.where("Car.manual = true").count %>
返回此错误:
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "car"
LINE 1: ...ars" WHERE "cars"."driver_id" = $1 AND (Car.m...
^
: SELECT COUNT(*) FROM "cars" WHERE "cars"."driver_id" = $1 AND (Car.manual= true)
当我删除“.count”时,它似乎找到了一个关系,因为它打印出来:
#<Car::ActiveRecord_AssociationRelation:0x007fea6ddf4c88>
我也试过
<%= @driver.cars.where(manual = true).count %>
但这会返回所有司机车的数量。
我怀疑问题出在我的“manual = true”语法上,但我对编写查询相当新,所以我可能会错过一些非常明显的东西。如果有人能帮我弄清楚我哪里出错了,我会很感激。 (或者,当然,如果有更好的方法可以做到这一点。)
答案 0 :(得分:0)
Driver
类应声明关系:
class Driver
has_many :cars
# other things
end
然后,您必须将哈希值传递给where
条件:
<%= @driver.cars.where(manual => true).count %>
或使用新的ruby哈希语法:
<%= @driver.cars.where(manual: true).count %>
您始终可以使用
调试发送到数据库的查询<%= @driver.cars.where(manual: true).to_sql %>