0

如果用户 --> 学生 // 员工(单表继承),并且他们都属于一个组织 --> 学校 // 工作(单表继承),那么编写关联的正确方法是什么?我将 organization_id 放入 User 类中,并在各自的子类中写入了属于 /has many,但是当我调用 User.school 时,我得到“nil”,即使他的 organization_id = 1。

用户.rb

class User < ActiveRecord::Base
  attr_accessible :email, :name, :password, :organization_id, :type
end

学生.rb

class Student < User
  belongs_to :school
end

员工.rb

class Employee < User
  belongs_to :company
end

组织.rb

class Organization < ActiveRecord::Base
  attr_accessible :name
end

学校.rb

class School < Organization
  has_many :students
end

公司.rb

class Company < Organization
  has_many :employees
end
4

2 回答 2

0

User 类没有定义学校协会,并且对 Student 类一无所知。所以你不能指望 User.school 工作。您可以期望 Student.school 工作,因为这是您的代码定义的。

STI 确实形成了列的透视图,它只是添加了一个类型字符串列,该列显示记录映射到的模型的子类型。

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

于 2013-05-05T23:17:36.157 回答
0

我强烈建议您不要使用单表继承。你从中得到什么好处?学生和员工是不同的东西,学校和公司也是如此。它们应该是单独的表。从长远来看,它会让你的生活变得如此简单。如果你不使用单表继承,这个问题也会消失。

于 2013-05-05T23:01:39.980 回答