Rails - 如何从ActiveRecord对象中仅获取特定记录?

时间:2016-06-27 12:51:13

标签: ruby-on-rails ruby object activerecord hash

我从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" }

不起作用。

2 个答案:

答案 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的更多信息。