関係/コレクションから特定の属性をすべて取得する良い方法はありますか?たとえば、人の車のすべての名前のリストが必要です。明らかに、私は次のことを行うことはできません。
Person.Cars.Name(s)
...しかし、その性質の何かがそれを処理するruby(またはActiveRecordヘルパーメソッドがあります)に存在しますか?もちろん、すべての車を繰り返し処理して配列に追加することもできますが、もう少しクリーンなものが必要です。何か案は?
一番。
関係/コレクションから特定の属性をすべて取得する良い方法はありますか?たとえば、人の車のすべての名前のリストが必要です。明らかに、私は次のことを行うことはできません。
Person.Cars.Name(s)
...しかし、その性質の何かがそれを処理するruby(またはActiveRecordヘルパーメソッドがあります)に存在しますか?もちろん、すべての車を繰り返し処理して配列に追加することもできますが、もう少しクリーンなものが必要です。何か案は?
一番。
cars
がの関連付けでありperson
、name
のプロパティである場合car
、次の操作を実行できます。
# person = Person.find(conditions)
person.cars.collect { |car| car.name }
ActiveSupport
または( Ruby 1.9のおかげで):
person.cars.collect(&:name)
更新:これは次の場所に文書化されています:
has_many
返品用のアソシエーションプロキシArray
Array#collect
Symbol#to_proc
でActiveSupport
、2番目の例で使用Symbol#to_proc
Ruby1.9でアップデート2:フォーマットを適用する例:
person.cars.collect { |car| "(#{car.name})" }