Rails单表继承与小写类型名称

我正在开发一个应用程序,该应用程序与具有用于单表继承的类型列的遗留数据库进行交互。 这个数据库仍然被现有的PHP应用程序使用,所以我必须处理那里的事情。 我试图为此设置一些模型,其中一个关键表是使用STI方案和类型列设置的,但是,该列中的所有类型都是小写字母。

在我到目前为止的测试中,如果我更改值以匹配类名称(例如,索赔人而不是索赔人),则Rails可以与类型列一起正常工作。 不过,我不想在生产数据库中更改这些值,即使它可能是好的,我也不希望进入并修改旧版应用程序以保存不同的名称...

为了解决这个问题,我有两个问题...

1)有无论如何,我可以配置模型,以识别类='索赔人'地图class ='索赔人'?

2)失败了,有没有一种方法可以告诉rails在这个表上不使用STI,即使它有一个类型列?

我做了一些Google搜索,还没有拿出很多...


我没有在STI设置中尝试过,但在使用旧表时,我能够在ActiveRecord模型上使用“set_table_name”方法。

class Claimant < ActiveRecord::Base
  set_table_name 'claimant'
end

或者使用自定义方法:

def table_name
  'claimant'
end

抱歉我没有得到一张STI表格来方便测试,但认为这可能有助于解决您的问题。

回答你的问题的第二部分,我相信你可以通过指定一个不存在的列名来禁用Rails来查看类型列。

class Claimant < ActiveRecord::Base
  inheritance_column = :_type_column_disabled
end
链接地址: http://www.djcxy.com/p/49725.html

上一篇: Rails single table inheritance with lowercase type names

下一篇: ActiveRecord: size vs count