Rails 5 - belongs_to但has_many association

时间:2018-02-21 22:28:38

标签: ruby-on-rails associations

我目前正在尝试创建一个系统,允许特定用户创建可由许多其他用户注册的课程记录。我尝试过一些关联技巧,例如has_and_belong_to_manyhas_many :through以及其他一些设置,但却无法正确使用。

基本上我需要的是以下内容:

  • 课程属于(由一个用户创建)(foreign_id => admin_id)
  • 课程有很多注册用户(加入表?)
  • 用户有许多已创建的课程
  • 用户可以属于许多课程

如果你知道如何实现这一点,我将非常感谢你的意见。

1 个答案:

答案 0 :(得分:0)

我会使用Course模型来表示课程信息,并使用user_id属性与创建课程的用户相关联。我还会创建一个名为Enrollment的关联表/模型,它是UserCourse之间的关联。然后你可以这样做:

#User.rb
has_many :courses
has_many :enrollments
has_many :enrolled_courses, through: :enrollments, source: :course

#Enrollment.rb
belongs_to :course
belongs_to :user

#Course.rb
belongs_to :user
has_many :enrollments
has_many :users, through: :enrollment

使用此配置,您可以致电course.user以接收创建课程的用户,但您也可以致电course.users以接收已注册课程的用户。另一方面,您可以拨打user.enrolled_courses以接收用户注册的课程列表,或user.courses以接收用户创建的课程列表。