2012-07-03 2 views
1

내가 루비 1.8.6 사용하고 있습니다를 확인하고 저장하기 전에 Marshal.dump으로 직렬화 내가 memcache에 클라이언트를 사용하여 캐시 할 클래스 (하지 액티브 클래스),이 방법 캐시에. 그러나, 그것은 동일한 데이터베이스 행에 해당하는 주위에 여러 객체가 돌아가는 것을 원하지 않기 때문에 인스턴스 변수 (이 ActiveRecord 클래스를 참조)가 있습니다. 대신 직렬화 된 객체를 캐시에서로드하고 재구성 한 후 해당 객체 (이미 참조가 있음)를 참조하도록 속성을 설정하려고합니다.속성 과도 (정렬 화되지 않음)

하나의 속성 만 마샬링되는 것을 방지하는 가장 쉬운 방법은 무엇입니까?

는 (나는 this question 알고 있어요,하지만 주어진 대답은 액티브 클래스에만 적용 나타납니다.)

답변

2

http://www.ruby-doc.org/core-1.9.3/Marshal.html

에서 메소드 marshal_dump가 호출되는 객체를 덤프합니다. marshal_dump는 객체를 재구성하기 위해 marshal_load에 필요한 정보가 들어있는 결과를 반환해야합니다 ( ). 결과는 개체가 될 수 있습니다.

marshal_dump를 사용하여 덤프 된 객체를로드 할 때 객체는 먼저 이 할당되고 marshal_load가 marshal_dump의 결과와 함께 호출됩니다. marshal_load는 결과에서 정보의 개체를 다시 만들어야합니다.

그래서 연결하려는 질문이 적용됩니다. 이 두 가지 방법을 무시하면 괜찮을 것입니다.

+0

좋아,하지만 내가 원하지 않는 속성을 제거 할 수 있도록 모든 속성의 값을 포함하는 해시를 얻는 방법은 무엇입니까? 내가 링크 된 대답에서 언급 한'attributes' 메소드는 ActiveRecord 객체에서만 사용할 수 있습니다. – Taymon

+0

클래스의 모든 속성에 액세스 할 수 있습니다. 속성 해시는 무엇이 필요합니까? – phoet

+0

그래서 모두 나열해야합니다. – Taymon