Mic*_*ton 59
John Topley的答案实际上是错误的.在基类中设置abstract_class = true实际上会导致子类自动停止设置其类型.另外,除非你在基类中使用set_table_name,否则子类会抱怨它们的表不存在.
这是因为abstract_class = true的目的是在不使用STI时设置继承,并希望在ActiveRecord :: Base和一个或多个类之间的类层次结构中有一个抽象类(不由db表支持的类)模特课.
初始化raise是一个解决方案,同时将validates_presence_of:type添加到基类是一个解决方案.
注意如果你要覆盖初始化,你需要调用super:
def initialize(*args)
raise "Cannot directly instantiate an AbstractUser" if self.class == AbstractUser
super
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6052 次 |
| 最近记录: |