我有很多遺留數據庫,我需要從中抽取原始數據。數據庫中的每個表都有任意名稱和任意字段集合。我已經越來越對這些字段具有以下級接入:對遺留表使用ActiveRecord類
class Frt < ActiveRecord::Base
establish_connection :legacy
set_primary_key "point"
end
當我到達我的代碼的地步,我知道表名,我可以撥打:
Frt.set_table_name "table"
t = Frt.find_by_sql("blah")
something = t.field_name + t.other_field_name
etc...
的問題是,我已經意識到,這將可訪問的字段名稱鎖定到我首先選擇的任何表。如果我嘗試通過對`set_table_name'方法的另一個調用來更改表,它將更改該類的屬性,但是任何新實例仍將具有與第一個相同的一組字段。到目前爲止,在我的應用程序中,我不需要其他任何東西,但是我正在以一種方式擴展該程序,我知道它會咬我的腳步。
我試過`Frt.send:set_table_name「new_table」',希望它會導致ActiveRecord再次做到這一點。它沒有。
任何人都可以建議我怎麼能夠保持ActiveRecord的便利,但得到它動態重映射它的領域,無論我需要加載的任何表?
你可以發佈你的代碼的其餘部分?你在哪裏做ActiveRecord obj? – sethvargo 2011-01-07 17:58:50
這不是我上面的嗎? 't = Frt.find_by_sql(「blah」)' – 2011-02-02 13:22:41