【问题标题】:Rails 5 - belongs_to but has_many associationRails 5 - belongs_to 但 has_many 关联
【发布时间】:2018-02-22 15:52:04
【问题描述】:
我目前正在尝试创建一个系统,该系统允许特定用户创建可以由许多其他用户注册的课程记录。我尝试了一些关联技术,例如has_and_belong_to_many、has_many :through 和其他一些设置,但都无法正确使用。
基本上我只需要以下内容:
- 课程属于(由)单个用户(foreign_id => admin_id)
- 课程有许多注册用户(加入表?)
- 用户创建了许多课程
- 用户可以属于多个课程
如果您知道如何实现这一点,我将非常感谢您的意见。
【问题讨论】:
标签:
ruby-on-rails
associations
【解决方案1】:
我将使用Course 模型来表示课程信息,并使用user_id 属性与创建课程的用户相关联。我还将创建一个名为Enrollment 的关联表/模型,它是User 和Course 之间的关联。然后你可以这样做:
#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 接收用户创建的课程列表。