2015-01-26 6 views
0

이전 코드를 이전 읽기 전용 데이터베이스 (이전 MySQL 데이터베이스)를 사용하는 레거시 모듈로 옮겼습니다. 새로운 버전의 PostgreSQL.다형 클래스가 레거시 모듈로 이동하여 클래스 대신 다형성 유형 Legacy :: Class를 찾고 있습니다

다형성 연결이 될 때까지 모든 것이 괜찮습니다. 그것은 eventable_type : 'Legacy :: Schedule'대신 'Schedule'을 찾으려고합니다.

필드에서 'Legacy :: Schedule'로 변경하려면 업데이트 할 수 있지만 가장 깨끗한 해결책은 아닌 것 같습니다. API에서 ActiveRecord 쿼리를 수정하고 싶습니다. 관계 해킹이있는 경우이를 선호합니다.

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 
,536

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 Event < Legacy::LegacyData 
    belongs_to :eventable, polymorphic: true 
    ... 
    end 
end 

: 여기

내가 가진 것의 예이다

업데이트 :

이것은 불완전합니다. Legacy :: Schedule이 이벤트 연결에서 쿼리하거나 빌드 할 때 예를 들어 설명하지 않음 : 레거시 :: Schedule