Ruby on Rails 3.1: правильно ли я устанавливаю эти отношения? - PullRequest
2 голосов
/ 15 декабря 2011

Я делаю свое первое приложение на Ruby on Rails 3.1 .... Правильно ли настроены эти отношения?По сути, студент / клиент сможет войти и оценить учителя.У клиента может быть много учителей, а у учителя может быть много клиентов.Каждый клиент может создать оценку для конкретного учителя (учитель не может оценивать клиентов).Рейтинги не являются обязательными.

Я намерен иметь возможность отображать оценки учителей от различных клиентов, а также разрешать клиентам входить в систему и оценивать всех учителей, которых они имели.

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

1 Ответ

4 голосов
/ 15 декабря 2011

Я бы сказал, что использование has_and_belongs_to_many следует использовать, когда у вас есть только таблица базы данных, а не модель Rails для объединения моделей.В вашем случае, так как у вас есть модель с именем Rating, я бы сказал, что лучше использовать has_many, :through.

. Для этого измените ваши модели Учителя и Клиента так, чтобы они выглядели так:

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

Модель Rating не нуждается в каких-либо изменениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...