8

有没有一种从关系/集合中检索所有特定属性的好方法?例如,我想要一个人的所有汽车名称的列表。显然我不能做以下事情:

Person.Cars.Name(s)

...但是在 ruby​​ 中是否存在这种性质的东西(或者是否有 ActiveRecord 辅助方法)来处理它?显然我可以遍历所有的汽车并附加到一个数组中,但我想要一些更清洁的东西。有任何想法吗?

最好的。

4

2 回答 2

11

如果cars是 a 的关联personnamea 的属性car,则可以执行以下操作:

# person = Person.find(conditions)
person.cars.collect { |car| car.name }

甚至(感谢ActiveSupport和/或 Ruby 1.9):

person.cars.collect(&:name)

更新:这记录在以下地方:

更新 2:应用格式的示例:

person.cars.collect { |car| "(#{car.name})" }
于 2009-07-05T23:21:00.907 回答
0

在较新的 rails 版本(> 3.2.1)中,您可以使用 method pluck,whitch 是 from 的方法ActiveRecord,因此它确实比任何顺序数组方法(等)更快地检索map属性collect

在这种情况下,您可以像这样使用: Person.pluck(:name)

但作为一种ActiveRecord方法,你只能在 中使用它ActiveRecord::Relation,而不是在数组中

于 2020-01-30T00:56:42.827 回答