0
cars = Car.find(data).find_all{ |car| car.model == "Honda" }

这将返回 Car 的列表——我想将此列表转换为仅包含 car.id 的列表。我将如何以类似 Ruby 的方式进行操作?

4

3 回答 3

2

你可以这样做:

car_ids = Car.find(data).find_all{ |car| car.model=="Honda" }.map{ |car| car.id }

本质上,array.map { |x| f(x) }返回一个大小相同的新数组,其中包含以f相同顺序调用每个原始数组条目的结果。

于 2012-04-26T11:57:10.720 回答
2

只需调用:

cars = Car.find(data).find_all{ |car| car.model == "Honda" }.map{ |car| car.id }

http://corelib.rubyonrails.org/classes/Array.html#M000427

于 2012-04-26T11:58:19.453 回答
1

我会这样做:

cars = Car.where(id: data, model: 'Honda').pluck(:id)

假设这data是一个汽车 ID 的数组

于 2012-04-26T12:21:13.163 回答