是否有从关系/集合中检索所有特定属性的好方法?例如,我想要一个人所有汽车名称的列表。显然我不能执行以下操作:
人.车.名
...但是 ruby 中是否存在处理该问题的某些特性(或者是否存在 ActiveRecord 辅助方法)?显然我可以遍历所有汽车并附加到一个数组,但我想要更简洁的东西。有什么想法吗?
最好的。
最佳答案
如果cars
是person
的关联,而name
是car
的属性,那么你可以执行以下操作:
# person = Person.find(conditions)
person.cars.collect { |car| car.name }
甚至(感谢 ActiveSupport
和/或 Ruby 1.9):
person.cars.collect(&:name)
更新:记录在以下位置:
- Association proxy for
has_many
returnsArray
-
Array#collect
-
Symbol#to_proc
inActiveSupport
, 用于第二个例子 -
Symbol#to_proc
in Ruby 1.9
更新 2:应用格式的示例:
person.cars.collect { |car| "(#{car.name})" }
关于ruby-on-rails - 如何检索关系/集合的特定属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085038/