如果用户 - >学生//员工(单表继承),他们都属于组织 - >学校//工作(单表继承),编写关联的正确方法是什么?我将organization_id放入User类,并在各自的子类中编写了属于/有多个,但是当我调用User.school时,即使他有一个organization_id = 1,我也会得到" nil"。
user.rb
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :organization_id, :type
end
student.rb
class Student < User
belongs_to :school
end
employee.rb
class Employee < User
belongs_to :company
end
organization.rb
class Organization < ActiveRecord::Base
attr_accessible :name
end
school.rb
class School < Organization
has_many :students
end
company.rb
class Company < Organization
has_many :employees
end
答案 0 :(得分:0)
我强烈建议您不要使用单表继承。你从中获得了什么好处?学生和员工是不同的东西,学校和公司也是如此。它们应该是单独的表格。从长远来看,它会让你的生活如此简单。如果你不使用单表继承,这个问题也会消失。
答案 1 :(得分:0)
User类没有定义学校关联,并且完全不了解Student类。所以你不能指望User.school工作。您可以期待Student.school工作,因为这是您的代码所定义的。
STI的作用形成了列的视角,它只是添加了一个类型字符串列,显示了记录映射到哪个模型的子类型。
您也可以重新考虑如何为数据建模。学生属于学校,但用户也可能属于公司或两所学校。