如何检索关系/集合的特定属性?

hum*_*der 7 ruby collections attributes ruby-on-rails relationship

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

Person.Cars.Name(S)

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

最好.

mol*_*olf 9

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

# person = Person.find(conditions)
person.cars.collect { |car| car.name }
Run Code Online (Sandbox Code Playgroud)

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

person.cars.collect(&:name)
Run Code Online (Sandbox Code Playgroud)

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

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

person.cars.collect { |car| "(#{car.name})" }
Run Code Online (Sandbox Code Playgroud)