@addy.first.street
devrait fonctionner, car il s'agit d'une liste de classes d'adresses contenant un seul membre.
Pour afficher chaque rue pour plus dans la liste des adresses:
@addy.each do |address|
puts address.street
end
ou
list_of_streets = @addy.map { |address| address.street }
Edit:
Lorsque vous avez un problème d'identification quelle classe vous avez, vérifiez toujours object.class
. Lorsque vous utilisez juste object
dans IRB, alors vous voyez la sortie de object.inspect
, qui n'a pas à afficher le nom de la classe ou même peut usurper certaines informations. Vous pouvez également appeler le object.methods
, object.public_methods
.
Et rappelez-vous que dans Ruby une classe est aussi une instance (de classe Class). Vous pouvez appeler @addr.methods
pour obtenir des méthodes d'instance et @addr.class.methods
pour obtenir des méthodes de classe.
Edit2:
Dans Rails #find
peut prendre le premier symbole de paramètre, et si vous passez :first
de :last
, vous obtiendrez un seul objet. Idem si vous passez un entier (id de l'objet récupéré). Dans d'autres cas, vous obtenez la liste comme résultat, même si elle ne contient qu'un seul objet.