2011-09-28 2 views
1

내가 사용 해왔던 보석이 모델에 메소드를 추가합니다. 최근 메서드 이름 중 하나가 내 모델의 기존 데이터베이스 특성 중 하나와 같아 지도록 메서드 이름이 업데이트되었습니다.Ruby on Rails : 내 모델의 기존 속성, 옵션을 파괴하는 보석 업데이트?

내 데이터베이스의 열 이름을 바꾸고 보석을 최신 상태로 유지하려면 내 코드를 모두 업데이트하는 것 외에이 문제에 대한 해결 방법이 있습니까?

좀더 구체적으로 말하자면 모델 추적 기능을 추가 한 PaperTrail입니다. 내 모델에는 데이터베이스에 version_name이라는 기존 속성이 있습니다.이 속성은 PaperTrail의 최신 버전이 PaperTrail에서 다른 메소드의 이름을 정의하는 데 사용되는 class_attribute version_name으로 방금 추가되었습니다.

답변

1

PaperTrail에 익숙하지 않습니다. 당신은 아마 모델에 주위에이 방법을 얻을 수, PaperTrail이 VERSION_NAME의 *의 이름을 변경할 수있는 설정 옵션이없는 가정 :

class Thingy 
    def version_name_attr 
    attributes['version_name'] 
    end 

    def version_name_attr=(val) 
    attributes['version_name'] = val 
    end 
end 

그냥 사용 * version_name_attr * 당신이 당신의 속성을 액세스 할 때마다, and * verson_name *을 사용할 수 있습니다.

이와 비슷한 내용은 조금 더 깨끗한이지만 PaperTrail이 * version_name *을 내부적으로 사용하면 문제가 발생할 수 있습니다.

class Thingy 
    alias_method :paper_trail_version_name, :version_name 
    def version_name 
    attributes['version_name'] 
    end 
end 

이 경우 PaperTrail 메서드를 사용하려면 * paper_trail_version_name *을 사용하십시오. 특성에 대한 액세스는 예상대로 유지됩니다.