我正在使用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
答案 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
评级模型不需要任何更改。