模型中有多个级别的has_many

时间:2011-04-27 07:51:34

标签: ruby-on-rails ruby activerecord has-many-through

我正在使用Ruby on Rails(特别是ActiveRecord),我正在尝试决定使用多个级别链接我的模型是个好主意。

class Student < ActiveRecord::Base
  has_many :student_sections
  has_many :sections, :through => :student_sections
  has_many :courses, :through => :sections
end

看起来这样可行,但我在ActiveRecord上没有很多经验。有没有理由不这样做?

2 个答案:

答案 0 :(得分:2)

这很好,但你应该记住,课程协会实际上只是一个'获得'协会(而不是'获取和设置')。我的意思是你可以说

@ student.courses

(在做了neo的修复之后)获取课程列表,但是你做不到

@ student.courses&lt;&lt; @course

因为rails没有在学生和课程之间进行必要连接所需的部分信息。

答案 1 :(得分:0)

您需要添加:source属性

has_many :sections, :through => :student_sections, :source => 'your_source'