我正在尝试与具有名为“type”的列的Legacy表集成。避免Rails/ActiveRecord和Legacy架构中的“单表继承”
Rails将“巧妙”地假设,只要我们在表中有一个'type'列,那么它将尝试使用Single Table Inheritance。
有没有办法避免这种情况?
(我不能重命名列)。
我正在尝试与具有名为“type”的列的Legacy表集成。避免Rails/ActiveRecord和Legacy架构中的“单表继承”
Rails将“巧妙”地假设,只要我们在表中有一个'type'列,那么它将尝试使用Single Table Inheritance。
有没有办法避免这种情况?
(我不能重命名列)。
那么,它的大部分类型是智能约定配置有一些非常实际的好处。 ;-)
在惯例不起作用的地方,就像你的情况一样,(可能 - 至少,我总是找到一个......)解决它的方法。对于遗留模式,有一些可能会立即想起。
set_inheritance_column
使用:type
作为STI指示器,从而class LegacyValue < ActiveRecord::Base
set_inheritance_column 'does_not_have_one'
end
在Rails 4 set_inheritance_column被弃用,self.inheritance_column应该使用:
class LegacyValue < ActiveRecord::Base
self.inheritance_column = 'does_not_have_one'
end
使用set_inheritance_column:这是你最好的选择。 – 2010-07-08 13:13:47