我有老师模特:
class Teacher < User
has_many :categories, dependent: :destroy
has_many :grades, through: :categories
end
成绩模型:
class Grade < ApplicationRecord
has_many :categories, dependent: :destroy
has_many :teachers, through: :categories
end
类别模型:
class Category < ApplicationRecord
belongs_to :teacher
belongs_to :grade
end
学生模特:
class Student < User
end
现在我想在Grade模型和Student模型之间建立关系 (学生有一个年级和一个年级有很多学生)通过模型类别。 我怎么能这样做?
答案 0 :(得分:0)
class Student < User
has_one: :grade
end
和
class Grade < ApplicationRecord
has_many :categories, dependent: :destroy
has_many :teachers, through: :categories
has_many :students, through: :categories
end
和
class Category < ApplicationRecord
belongs_to :teacher
belongs_to :grade
belongs_to :student
end
上述不起作用..?如果您遇到问题,您应该将您尝试过的内容放在帖子中。
答案 1 :(得分:0)
连接表用于多对多关系。由于学生只有一个年级,这是多对一的关系,而不是多对多的关系。
您不需要(也不应该使用)连接表。
而是在学生(用户)表中添加grade_id
列,并设置如下关联:
class Student < User
belongs_to :grade
end
class Grade < ApplicationRecord
has_many :students
end
不要使用任何through
关联来连接具有成绩的学生。