如何防止Rails 3.2.13中单表继承的派生模型以及如何将继承的模型对象转换为派生模型对象

时间:2014-01-20 12:10:45

标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2 single-table-inheritance

我有三个模型User,Group,Employee。在用户和组模型之间实现单表继承。但是我不想在继承User模型但希望将User模型对象转换为Employee模型对象的Employee模型中进行单表继承。我通过在Employee模型中添加一段代码 self.inheritance_column =:_type_disabled 并通过在User对象上调用成为()方法来实现它。它适用于Rails 3.2.8但不适用于Rails 3.2.13版本。

例外是:

NoMethodError (undefined method `_type_disabled=' for #<Employee:0xb429428>)

代码段是:

class Employee < User

  self.inheritance_column = :_type_disabled

  def self.current

    User.current.becomes(self)

  end

  .
  .
  .
  .
  .
 end

请在Rails 3.2.13中为我提供解决方案。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我从朋友那里得到了答案,我们只需要在相应的模型中定义为虚拟属性(在我的例子中,是员工模型)

attr_accessor :_type_disabled
self.inheritance_column = :_type_disabled