2015-01-26 53 views
0

我將遺留代碼移入使用單獨的只讀數據庫(舊的MySQL數據庫)的傳統模塊,因爲我們已經移動到PostgreSQL的新版本。多態類轉移到傳統模塊,正在尋找多態類型Legacy :: Class而不是類

一切都很好,直到我們找到多態關聯。它想查找eventable_type:'Legacy :: Schedule'而不是'Schedule'。

我可以在字段上進行更新以更改爲「Legacy :: Schedule」,但我不認爲這是最乾淨的解決方案。我只想修改API中的ActiveRecord查詢,或者如果存在關係破解,我更願意這樣做。

這裏是例子我有什麼:

class Legacy::LegacyData < ActiveRecord::Base 
    self.abstract_class = true 

    case Rails.env 
    when "production" 
    establish_connection :legacy_production 
    when "development" 
    establish_connection :legacy_development 
    when "test" 
    establish_connection :legacy_test 
    else 
    puts "connection: Rails.env error on establish_connection" 
    end 
end 

​​

module Legacy 
    class Schedule < Legacy::LegacyData 
    has_many :events, as: :eventable 

    ... 
    end 
end 

回答

0

內部遺留::活動

def eventable 
    if self.eventable_type == 'Schedule' 
    Legacy::Schedule.find(self.eventable_id) 
    else 
    Legacy::OtherClass.find(self.eventable_id) 
    end 
end 

更新:

這是不完整的。當Legacy :: Schedule查詢或構建其事件關聯時,它不會考慮Legacy :: Schedule