J'ai une page d'index dans laquelle je souhaite afficher le profil de tous les utilisateurs et leurs photos associées. J'utilise le plugin Paperclip pour les photos. Dans le contrôleur de profils, j'ai la variable d'instance @profile mais elle me montre la table dans la table de profils seulement et pas la table de photos.Ruby on Rails: Comment joindre deux tables
@profile = Profile.find(:all, :include => :photos,
:joins => "INNER JOIN photos ON photos.profile_id = profiles.id")
Les modèles sont présentés ci-dessous:
class Profile < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :profile
end
Ce que je veux être en mesure de montrer dans la vue est quelque chose comme:
- Profil de John (par exemple, le nom, l'âge, sexe) - Photo de John (p.ex., une seule photo affichée)
- Le profil de Mary ici - la photo de Mary montrée ici
- Le profil de Bob ici - l'image de Bob montrée ici
Si un profil a beaucoup de photos, comment voulez-vous déterminer quelle image montrer pour un profil particulier? Est-ce que cela devrait être une relation un-à-un? (Il y aurait plusieurs façons de faire cela dans la base de données - Profil pourrait avoir une clé étrangère pour profile_photo, par exemple, ou il pourrait y avoir une colonne booléenne dans Photos indiquant si une photo particulière est destinée à être "primaire") –
Oui, j'ai une colonne booléenne appelée primaire. Si la valeur est définie sur 1, la photo doit s'afficher. – Max