Je suis très nouveau sur les rails et j'ai fait une application de base avec deux tables mais je n'ai pas compris comment montrer la valeur de la table référencée au lieu de l'id. Mes deux tables sont Genres
et Songs
et ressemblent à ceci.Comment afficher les valeurs des tables référencées dans des rails?
id | trackgenre | created_at | updated_at
----+-------------+----------------------------+-------------------------
1 | Classic | 2017-06-13 02:37:07.041974 | 2017-06-13 02:37:07.041974
2 | Rock | 2017-06-13 02:37:07.060634 | 2017-06-13 02:37:07.060634
3 | Hip-Hop | 2017-06-13 02:37:07.064877 | 2017-06-13 02:37:07.064877
4 | Alternative | 2017-06-13 02:37:07.067473 | 2017-06-13 02:37:07.067473
id | songtitle | artist | genre_id
----+-------------+----------------------------+---------------------------
1 | Loser | Beck | 4
2 | Jailhouse rock | Elvis Presley | 2
3 | My Way | Frank Sinatra | 2
Mon song.rb
ressemble à ceci
class Song < ApplicationRecord
belongs_to :genre
end
et genre.rb
est
class Genre < ApplicationRecord
has_many :songs
end
Maintenant, quand je suis extraction de données à partir de l'avant, je vois le genre_id
au lieu de la valeur. Par exemple, si je récupère le deuxième élément de ma table Songs, je reçois Jailhouse rock, Elvis Presley, 2. Que devrais-je faire pour obtenir la valeur de genre_id qui est "Rock" pour apparaître sur le front end au lieu de ce nombre 2?
Impressionnant. Mais j'ai toujours pensé que les jointures se faisaient à travers des associations quand je les faisais dans les fichiers des modèles ... belongs_to: genre has_many: songs. Ne sont pas ces tables jointes? Désolé si je ressemble à un noob total. Je suppose simplement que les rails font tout pour moi parfois. Et où devrais-je faire la jointure si je voulais le faire pour toutes les chansons de ma base de données? – craftdeer
Les associations belongs_to et has_many définissent essentiellement les méthodes que vous pouvez utiliser pour extraire les attributs de plusieurs tables associées. Rails ne joint pas de tables pour vous jusqu'à ce que vous utilisiez la méthode 'joins'. Après avoir spécifié les associations, Rails vous permet de joindre des tables en utilisant 'joins 'ou' includes'. Pour extraire les attributs de 'Song' et' Genre', vous devrez les joindre. Pour extraire toutes les chansons avec un nom de genre, utilisez la requête ci-dessus et remplacez 'second' par' all'. 'second' vous donne la deuxième chanson,' all' vous donne toutes les chansons. – moyinho20
génial. Merci Monsieur – craftdeer