Rails Has_one和has_many关系

时间:2018-04-06 21:20:54

标签: ruby-on-rails ruby-on-rails-4 relationships single-table-inheritance

我有老师模特:

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模型之间建立关系 (学生有一个年级和一个年级有很多学生)通过模型类别。 我怎么能这样做?

2 个答案:

答案 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关联来连接具有成绩的学生。