我正在建模一个课程表,课程属于用户,课程的老师和创建者,而且课程可以有很多学生,他们也是用户。
所以它会是这样的
class Lesson < ActiveRecord::Base
belongs_to :user
has_many :users
end
我想打电话给第一个用户教师和用户学生的集合,我已经阅读了http://guides.rubyonrails.org/association_basics.html上的文档,但我找不到我想要的。
我正在建模一个课程表,课程属于用户,课程的老师和创建者,而且课程可以有很多学生,他们也是用户。
所以它会是这样的
class Lesson < ActiveRecord::Base
belongs_to :user
has_many :users
end
我想打电话给第一个用户教师和用户学生的集合,我已经阅读了http://guides.rubyonrails.org/association_basics.html上的文档,但我找不到我想要的。
这应该有你想要的: 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: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