如何在 Rails 中设置模型关联
How to setup model associations in Rails
我正在尝试为我的 Rails 应用程序中的三个模型创建关联。在应用程序中,用户可以访问包含视频的课程。我将如何建模?
这是我目前拥有的:
class User < ApplicationRecord
has_many :courses
has_many :videos, through: :courses
end
class Course < ApplicationRecord
belongs_to :user
has_many :videos
end
class Video < ApplicationRecord
belongs_to :course
belongs_to :user
end
这是为我希望应用程序能够实现的这些关联建模的正确方法吗?
通常,这看起来像:
class UserCourse < ApplicationRecord
belongs_to :user
belongs_to :course
end
class User < ApplicationRecord
has_many :user_courses
has_many :courses, through: :user_courses
has_many :videos, through: :courses
end
class Course < ApplicationRecord
has_many :user_courses
has_many :users, through: :user_courses
has_many :videos
end
class Video < ApplicationRecord
belongs_to :course
has_many :users, through: :course
end
那应该让你做:
@user.courses
@user.videos
@course.users
@course.videos
@video.course
@video.users
(当然,假设您已经实例化了上述每个变量并且您有关联的记录。)
我正在尝试为我的 Rails 应用程序中的三个模型创建关联。在应用程序中,用户可以访问包含视频的课程。我将如何建模?
这是我目前拥有的:
class User < ApplicationRecord
has_many :courses
has_many :videos, through: :courses
end
class Course < ApplicationRecord
belongs_to :user
has_many :videos
end
class Video < ApplicationRecord
belongs_to :course
belongs_to :user
end
这是为我希望应用程序能够实现的这些关联建模的正确方法吗?
通常,这看起来像:
class UserCourse < ApplicationRecord
belongs_to :user
belongs_to :course
end
class User < ApplicationRecord
has_many :user_courses
has_many :courses, through: :user_courses
has_many :videos, through: :courses
end
class Course < ApplicationRecord
has_many :user_courses
has_many :users, through: :user_courses
has_many :videos
end
class Video < ApplicationRecord
belongs_to :course
has_many :users, through: :course
end
那应该让你做:
@user.courses
@user.videos
@course.users
@course.videos
@video.course
@video.users
(当然,假设您已经实例化了上述每个变量并且您有关联的记录。)