Pregunta

¿Hay una buena manera de recuperar todos un atributo específico de una relación / colección? Por ejemplo, quiero una lista de todos los nombres de los coches de una persona. Obviamente no puedo hacer lo siguiente:

Person.Cars.Name (s)

... pero existe algo de esa naturaleza en Ruby (o hay un método de ayuda ActiveRecord) que se encarga de eso? Obviamente, podría iterar sobre todos los coches y añadir a una matriz, pero me gustaría algo un poco más limpia. ¿Alguna idea?

Mejor.

¿Fue útil?

Solución

Si cars es una asociación de un person y name una propiedad de un car, a continuación, puede hacer lo siguiente:

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

O incluso (gracias a ActiveSupport y / o Ruby 1.9):

person.cars.collect(&:name)

Actualización: Esto se documenta en los siguientes lugares:

Actualización 2: un ejemplo que aplica el formato:

person.cars.collect { |car| "(#{car.name})" }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top