我想使用一个名为type
的列,而不调用单表继承(STI)-我只想让type
成为一个保存String
的普通列。
我如何做到这一点,而不让Rails期望我有单表继承并抛出The single-table inheritance mechanism failed to locate the subclass...This error is raised because the column 'type' is reserved for storing the class in case of inheritance.
异常?
有什么好主意吗?
5条答案
按热度按时间6tr1vspr1#
在Rails 3.1中,
set_inheritance_column
已被弃用,您也可以只使用nil
作为名称,如下所示:brjng4g32#
我知道这个问题已经很老了,而且与您要问的问题有点不同,但是每当我想给列命名type或something_type时,我总是搜索type的同义词,然后使用它来代替:
这里有几个选择:* 种类、排序、品种、类别、集、流派、种类、顺序等 *
7fhtutme3#
可以使用
set_inheritance_column
覆盖STI列名:因此,选择一些不会用于任何操作的列名,并将其提供给
set_inheritance_column
。在Rails的较新版本中,您可以将
inheritance_column
设置为nil
:eblbsuwk4#
导轨4.x
我在一个**
Rails 4
应用程序中遇到了这个问题,但是在Rails 4**中,set_inheritance_column
方法根本不存在,因此您无法使用它。对我有效的解决方案是通过覆盖
ActiveRecord
的inheritance_column
方法来禁用单表继承,如下所示:希望能有所帮助!
vhmi4jdf5#
如果你想对所有的模型都这样做,你可以把它放在一个初始化器中。