belongs_to和has_many相同的项目

时间:2012-12-20 18:07:29

标签: activerecord

我正在为课程表建模,该课程属于用户,课程的教师和创建者,而且,课程可以包含许多学生,也是用户。

所以它会是这样的

class Lesson < ActiveRecord::Base
  belongs_to :user
  has_many :users
end

我想致电第一位用户老师,以及用户学生的用户,我已阅读http://guides.rubyonrails.org/association_basics.html处的文档,但我可以找不到我想要的东西。

2 个答案:

答案 0 :(得分:4)

这应该有你想要的:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

我想你想要class_name选项:

class Lesson < ActiveRecord::Base
  belongs_to :teacher, class_name: "User"
  has_many :students, class_name: "User"
end

答案 1 :(得分:0)

在您当前的代码中,所有用户都可以成为课程的“所有者”(教师),而您应该有两个额外的“学生”和“老师”课程与“用户”课程的关系为1:1

这样会更合适:

class Teacher < ActiveRecord::Base
  has_one :user
end

class Student < ActiveRecord::Base
  has_one :user
end

class Lesson < ActiveRecord::Base
  belongs_to :teacher
  has_many :students
end