Bonjour,

J'essai de créer un système qui relie mes articles à une table images, toutes les images seront stocké dans la table images et seront lié par un champs post_id.

Ce que je fais

J'ai donc une table post et une table images avec post_id

class Post < ApplicationRecord
belongs_to :images
end
______________________
class Image < ApplicationRecord
  belongs_to :classified
end

Ce que je veux

J'aimerais pouvoir afficher les images lié à mon article dans ma vue
post.images.path

Ce que j'obtiens

Pour le moment j'ai un undefined method error sur images

2 réponses


kal-el
Réponse acceptée

Par définition pour ce que tu veux faire, un post a plusieurs image et une image est associée à un post et un seul. Du coup, dans ton model Post tu ne dois pas utiliser belongs_to mais has_many:

class Post < ApplicationRecord
  has_many :images
end

class Image < ApplicationRecord
  belongs_to :post
end

Tu peux ensuite récupérer la liste des images associés à un Post en faisant:

post.images

A noter tout de même qu'ici post.images renvoi une collection, donc post.images.path ne fonctionnera pas (A contrario, ceci fonctionne post.images.first.path). A toi de boucler sur cette collection d'images pour toutes les afficher.

Steelmen
Auteur

Très bien merci de ta réponse kal-el :)