hum*_*der 7 ruby collections attributes ruby-on-rails relationship
有没有一种从关系/集合中检索所有特定属性的好方法?例如,我想要一个人车的所有名字的列表.显然我不能做到以下几点:
Person.Cars.Name(S)
...但是在ruby(或者有一个ActiveRecord辅助方法)中是否存在这种性质的东西来处理它?显然我可以迭代所有的汽车并附加到一个阵列,但我想要一些更清洁的东西.有任何想法吗?
最好.
如果cars是a的关联person和namea的属性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)
更新:这在以下地方有记录:
has_many退货的关联代理ArrayArray#collectSymbol#to_procinActiveSupport,在第二个例子中使用Symbol#to_proc 在Ruby 1.9中更新2:应用格式的示例:
person.cars.collect { |car| "(#{car.name})" }
Run Code Online (Sandbox Code Playgroud)