我从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" }
不起作用。
答案 0 :(得分:0)
只需将结果转换为数组,然后像这样过滤
result = car.car_services.to_a.select do |e|
e.car_type == "0"
end
答案 1 :(得分:0)
您可以在CarService模型中使用范围:
scope :type_ones, -> { where(car_type: 1) }
你可以像这样使用它:
car.car_services.type_ones
如果你使用枚举,它会更好。因为枚举会自动创建范围而不是您。当然它还有更多功能。有关enum的更多信息。