Pergunta

Existe uma boa maneira de recuperar todos um atributo específico de uma relação / coleção? Por exemplo, eu quero uma lista de todos os nomes de carros de uma pessoa. Obviamente eu não posso fazer o seguinte:

Person.Cars.Name (s)

... mas faz algo de que existem natureza em Ruby (ou há um método auxiliar ActiveRecord) que lida com isso? Obviamente eu poderia iteração sobre todos os carros e acréscimo para um array, mas eu gostaria de algo um pouco mais limpo. Alguma idéia?

Best.

Foi útil?

Solução

Se cars é uma associação de um person e name uma propriedade de um car, então você pode fazer o seguinte:

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

Ou mesmo (graças a ActiveSupport e / ou Ruby 1.9):

person.cars.collect(&:name)

Atualização: isso está documentado nos seguintes locais:

Update 2: um exemplo que aplica a formatação:

person.cars.collect { |car| "(#{car.name})" }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top