Ruby on Rails 3.1:我是否正确设置了这种关系?

时间:2011-12-15 00:28:08

标签: ruby-on-rails ruby relationships

我正在使用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 个答案:

答案 0 :(得分:4)

我会说当你只有一个数据库表而不是一个Rails模型来加入模型时,应该使用has_and_belongs_to_many。在你的情况下,既然你有一个名为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

评级模型不需要任何更改。