2011-09-15 3 views
0

높은 수준의 ActiveMerchant 게이트웨이 응답을 나타내는 gateway_response 개체가 있습니다. 앞으로이 문제가 필요할 경우를 대비하여이 객체에 매달 리고 싶습니다.액티브 레코드를 통해 db에서 속성으로 마샬링 된 개체를 저장하고 검색하는 가장 좋은 방법은 무엇입니까

DB에 저장하고 다음과 같이 마샬링했습니다. 할당시 마샬링하고 검색시 언 마샬링하는 getter/setter 메서드를 덮어 썼습니다. 이것은 작동하는 것 같다,하지만 난 액티브 레코드가이 작업을 수행 할 수있는 야윈 방법이 상상 :

def gateway_response=(r) 
    write_attribute(:gateway_response, Marshal.dump(r)) 
    end 
    def gateway_response 
    Marshal.load(read_attribute(:gateway_response)) 
    end 

답변

1

사용 serialize 방법.

class Order 
    # add a text column called gateway_response in the `orders` table. 
    serialize :gateway_response 
end 

지금 :

order.gateway_response = r 
order.save 
order.gateway_response # response object 
+0

하지이 사용 YAML합니까? 다시 사용할 수있는 Response 객체로 바꿀 것인가? 방법과 모두? – pixelearth

+0

메소드가 문제가 아니어야합니다. 우리가 염두해야하는 데이터입니다. 과거에는이 메서드를 사용하여 응답 알림에 반환 된 해시를 저장했습니다. 콘솔에서 이것을 시도해 볼 수 있습니다. –

관련 문제