J'ai trois modèles à l'aide des associations Active Record:Ajouter attribut imbriqué au modèle associé à Rails
Book Model
has_many :checkouts
User Model
has_many :checkouts
Checkout Model
belongs_to :book
belongs_to :user
À mon avis, ai-je besoin du livre, caisse et noms d'utilisateurs des caisses.
En utilisant Book.first.checkouts
je reçois:
#<ActiveRecord::AssociationRelation
[#<Checkout id: 30,
checkout_date: "2017-04-13",
return_date: nil,
book_id: 118,
user_id: 1,
created_at: "2017-04-13 17:43:07",
updated_at: "2017-04-13 17:43:07"
>,#<Checkout id: 50,
checkout_date: "2017-04-13",
return_date: nil,
book_id: 118,
user_id: 1,
created_at: "2017-04-14 00:33:34",
updated_at: "2017-04-14 00:33:34">
]>
Mais, je voudrais le nom d'utilisateur, et pas seulement l'id. J'ai essayé Book.first.checkouts.map { |c| c.user.name }
mais cela renvoie seulement le nom, et j'ai besoin du reste de l'information de caisse. Idéalement, mes données (converties en JSON) ressemble à quelque chose comme:
{
name: "Book Name",
checkouts: [
checkout_data: "Today",
user_name: "Mary"
]
}
Comment puis-je ajouter le nom d'utilisateur à mes données de caisse?
Affichez-vous les extractions individuellement, c'est-à-dire une boucle '.each'? Vous devriez être capable d'afficher 'checkout.user.name' – Okomikeruko
@Okomikeruko oui, individuellement à travers une boucle. 'checkout.user.name' fonctionne, mais il ne renvoie que le nom d'utilisateur. J'ai besoin de la caisse et du nom d'utilisateur. Je me demande si je peux l'ajouter à un attribut virtuel, ou quelque chose comme ça. – BHOLT
Je suppose que j'essaie de combiner les données de 2 objets: 'checkouts' et' user' – BHOLT