2

我正在建模一个课程表,课程属于用户,课程的老师和创建者,而且课程可以有很多学生,他们也是用户。

所以它会是这样的

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

我想打电话给第一个用户教师和用户学生的集合,我已经阅读了http://guides.rubyonrails.org/association_basics.html上的文档,但我找不到我想要的。

4

2 回答 2

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
于 2012-12-20T18:11:39.403 回答
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
于 2012-12-20T18:14:47.107 回答