【发布时间】:2016-10-29 11:56:55
【问题描述】:
我从 ActiveRecord 调用中得到这个:
#<ActiveRecord::Associations::CollectionProxy [
#<CarService id: nil, car_id: nil, car_service: 1,
created_at: nil, updated_at: nil, car_type: 0>,
#<CarService id: nil, car_id: nil, car_service: 11,
created_at: nil, updated_at: nil, car_type: 1>]>
一旦我得到这个,我只需要过滤car_type = "0" 的记录。如何在不进行另一个数据库调用 (WHERE car_type = "0") 的情况下做到这一点?
提前谢谢你。
编辑:
这个:
car.car_services.select{|key, hash| hash['car_type'] == "1" }
不工作。
【问题讨论】:
-
car.car_services.select{ |car_service| car_service.car_type.to_s == "1" }。顺便说一句,这是错误的方法。另一个针对 DB 的过滤查询会更快、更可靠。 -
你试过了吗:
car.car_services.select{|car_service| car_service.car_type == 1 }? -
为什么不
where?如果结果很大,select会花很长时间。如果查询全部完成,则不会再拨打电话 -
你能展示你原来的 ActiveRecord 调用吗? ActiveRecord 和 ActiveRelation 允许链接调用来优化你的 sql。这不会导致多个 sql 执行。如果我们知道您最初调用的内容,我们可能会附加一个限制您想要的方式的位置。
标签: ruby-on-rails ruby object activerecord hash