cars = Car.find(data).find_all{ |car| car.model == "Honda" }
这将返回 Car 的列表——我想将此列表转换为仅包含 car.id 的列表。我将如何以类似 Ruby 的方式进行操作?
cars = Car.find(data).find_all{ |car| car.model == "Honda" }
这将返回 Car 的列表——我想将此列表转换为仅包含 car.id 的列表。我将如何以类似 Ruby 的方式进行操作?
你可以这样做:
car_ids = Car.find(data).find_all{ |car| car.model=="Honda" }.map{ |car| car.id }
本质上,array.map { |x| f(x) }
返回一个大小相同的新数组,其中包含以f
相同顺序调用每个原始数组条目的结果。
只需调用:
cars = Car.find(data).find_all{ |car| car.model == "Honda" }.map{ |car| car.id }
我会这样做:
cars = Car.where(id: data, model: 'Honda').pluck(:id)
假设这data
是一个汽车 ID 的数组