2011-12-15 2 views
2

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

ответ

4

Я бы сказал, что использование 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 

Рейтинговая модель не нуждается в каком-либо изменении.

+0

Спасибо, я думаю, что у меня были проблемы, потому что я не думал, что вы можете использовать has_many: благодаря тому, что клиент может не оценивать учителя, но я вижу ошибку в своих мыслях. –

Смежные вопросы