Rails/ActiveRecord - 单表继承 - 覆盖类型字段

rec*_*nym 1 activerecord ruby-on-rails single-table-inheritance

是否可以覆盖此colummn的名称?我正在更改我的应用程序的某些部分以使用STI,还有其他字段正在使用中.我也希望它是整数类型.

有任何想法吗?

小智 7

根据ActiveRecord :: ModelSchema(3.2)中的代码,该set_inheritance_column方法现已弃用,您应该使用self.inheritance_column = column


mu *_*ort 5

在现代的Rails中,你会使用inheritance_column=(如同panckreous一样):

class M < ApplicationRecord
  self.inheritance_column = 'whatever'
  #...
end
Run Code Online (Sandbox Code Playgroud)

在较旧版本的Rails中(即最初编写此答案时的情况),您可以使用[ set_inheritance_column] [3]更改名称:

设置要用于给定值的继承列的名称,或者(如果值为nilfalse)指定给定块返回的值.

该列仍然必须是一个字符串(或text),因为AR希望将类名放在那里:

单表继承

Active Record通过将类的名称存储在默认名为"type"的列中来允许继承.