Bonjour,
Cela fait un petit bout de temps que je cherche comment je dois faire les relation entre mes tables, et je bute vraiment.

J'explique : J'ai des utilisateurs (Users) qui peuvent participer à des formations (Formations). Ces mêmes formations sont displonibles à certaines dates à travers la table Date_formations qui contient l'id de la formation ainsi que la date
on a donc :

# User.rb

has_and_belongs_to_many :formations
# Formation.rb

has_and_belongs_to_many :users
has_many :date_formations
# Date_formation.rb

belongs_to :formations

J'ai fait les relations de base, par contre j'aimerai pouvoir avoir un users_count pour chaque date_formation afin de savoir combien d'utilisateurs seront présents à cette formation, et dans l'autre sens pouvoir lister tous les utlisateurs inscrits à cette date de formation sans trop de complications (quelque chose du genre @presents = Date_formation.find(1).users).

j'ai pensé à ça :

# User.rb

has_and_belongs_to_many :formations
has_many :date_formations, through: :formations
# Date_formation.rb

belongs_to :formations
has_many :users, through: :formations

mais j'ai un peu de mal avec le :through, pensez-vous que c'est la manière la plus "propre" d'y arriver ?
Si vous trouvez que je me suis complètement planté et qu'il y a beaucoup mieux pour y arriver, dites-le moi ! :)

Merci d'avance pour vos réponses !

1 réponse


Il me semble que tu dois faire une table intermédiaire qui aura un champ user_id et un champ date_formation_id.