0

如果用户 - >学生//员工(单表继承),并且他们都属于组织 - >学校//工作(单表继承),那么编写关联的正确方法是什么?我将organization_id放入User类,并在相应的子类中写入属于/有许多,但是当我调用User.school时,即使他的organization_id = 1,我也会得到“nil”。我们的Rails建模思路出了什么问题?

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 

组织。 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

User类未定义学校关联,并且完全不了解Student类。所以你不能指望User.school工作。你可以期待Student.school的工作,因为这是你的代码定义。

STI形成柱的视角,它只是添加一个类型字符串列,它显示记录映射到哪个模型的子类型。

您也可能会重新考虑如何为数据建模。一个学生属于一所学校,但一个用户也可能属于一家公司或两所学校。