2 votes

Ruby on Rails 3.1 : Est-ce que je configure correctement cette relation ?

Je réalise ma première application en Ruby on Rails 3.1....Est-ce que ces relations sont correctement configurées ? Essentiellement, un étudiant/client pourra se connecter et évaluer un professeur. Un client peut avoir plusieurs enseignants et un enseignant peut avoir plusieurs clients. Chaque client peut créer une évaluation pour un enseignant particulier (un enseignant ne peut pas évaluer ses clients). Les évaluations sont facultatives.

J'ai l'intention de pouvoir afficher les évaluations d'un professeur par différents clients et de permettre aux clients de se connecter et d'évaluer tous les professeurs qu'ils ont eus.

class Client < ActiveRecord::Base
  has_many :ratings
  has_and_belongs_to_many :teachers
end

class Teacher < ActiveRecord::Base
  has_many :ratings
  has_and_belongs_to_many :clients
end

class Rating < ActiveRecord::Base
  belongs_to :teacher
  belongs_to :client
end

4voto

DanneManne Points 13408

Je dirais que l'utilisation de has_and_belongs_to_many doit être utilisé lorsque vous ne disposez que d'une table de base de données et non d'un modèle Rails pour joindre les modèles. Dans votre cas, puisque vous avez un modèle appelé Rating, je dirais qu'il est préférable d'utiliser has_many, :through .

Pour ce faire, modifiez vos modèles de professeur et de client pour qu'ils ressemblent à ceci :

class Client < ActiveRecord::Base
  has_many :ratings
  has_many :teachers, :through => :ratings
end

class Teacher < ActiveRecord::Base
  has_many :ratings
  has_many :clients, :through => :ratings
end

Le modèle de notation n'a pas besoin d'être modifié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X