我目前正在尝试创建一个系统,允许特定用户创建可由许多其他用户注册的课程记录。我尝试过一些关联技巧,例如has_and_belong_to_many
,has_many :through
以及其他一些设置,但却无法正确使用。
基本上我需要的是以下内容:
如果你知道如何实现这一点,我将非常感谢你的意见。
答案 0 :(得分:0)
我会使用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
以接收用户创建的课程列表。