2011-03-07 14 views

Respuesta

41

Utilice el método map:

Devuelve una nueva matriz con los resultados de la ejecución del bloque una vez para cada elemento de la enumeración.

def recruits_names 
    self.referrals.map { |r| r.display_name } 
end 

[Actualización] Según lo indicado por Staelen en los comentarios, este ejemplo se puede acortar aún más a:

def recruits_names 
    self.referrals.map(&:display_name) 
end 

Para los curiosos, esto se debe a & llamadas to_proc en el objeto siguiente (cuando se utiliza en una llamada a un método), y Symbol implementa to_proc para devolver un Proc que ejecuta el método indicado por el símbolo en cada valor cedido al bloque (ver the documentation).

+1

también puede soltar el 'self'. Ya está implícito – edgerunner

+7

Ruby es tan intuitivo que la respuesta ya está contenida en la pregunta :-) "Es más eficiente la forma Ruby de ** asignar ** atributo [...]" ¿No te encanta eso? –

+3

¿Qué sucede si quiere devolver más de un atributo, pero no todos? – Steve

Cuestiones relacionadas