2012-11-20 58 views
1

我正在處理一個應用程序,該應用程序與具有用於單表繼承的類型列的遺留數據庫接口。這個數據庫仍然被現有的PHP應用程序使用,所以我必須處理那裏的事情。我試圖爲此設置一些模型,其中一個關鍵表是使用STI方案和類型列設置的,但是,該列中的所有類型都是小寫字母。使用小寫字體名稱的Rails單表繼承

在我到目前爲止的測試中,如果我更改值以匹配類名稱(例如,索賠人而不是索賠人),則導軌可以與類型列一起正常工作。不過,我不希望更改生產數據庫中的這些值,即使它可能是好的,也不希望進入並修改舊版應用程序以保存不同的名稱...

In爲了解決這個問題,我有兩個問題...

1)有無論如何我可以配置模型來識別類='索賠人'地圖class ='索賠人'?

2)如果失敗了,有沒有一種方法可以告訴rails在該表上不使用STI,即使它具有類型列?

我做了一些谷歌上搜索,並沒有拿出多少尚未...

回答

0

我沒有在STI設置試過,但使用的是舊錶的時候,我能夠使用的方法ActiveRecord模型上的「set_table_name」。

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

或者用自定義的方法:

def table_name 
    'claimant' 
end 

道歉我沒有性病表方便測試這個,但認爲它可能會幫助您解決問題。

回答你的問題的第二部分,我相信你可以通過指定一個不存在的列名來禁用Rails來查看類型列。

class Claimant < ActiveRecord::Base 
    inheritance_column = :_type_column_disabled 
end