2013-05-10 1 views
0

어떻게 datetime 값을 사용하고 HStore를 사용하여 저장하고 검색합니까?레일 Hstore 날짜 시간 절약

나는 이것을 사용하고 있습니다 :

module HstoreAccessor 
    def self.included(base) 
    base.extend(ClassMethods) 
    end 

    module ClassMethods 
    def hstore_accessor(hstore_attribute, *keys) 
     Array(keys).flatten.each do |key| 
     define_method("#{key}=") do |value| 
      send("#{hstore_attribute}=", (send(hstore_attribute) || {}).merge(key.to_s => value)) 
      send("#{hstore_attribute}_will_change!") 
     end 
     define_method(key) do 
      send(hstore_attribute) && send(hstore_attribute)[key.to_s] 
     end 
     end 
    end 
    end 
end 

ActiveRecord::Base.send(:include, HstoreAccessor) 

는 접근을 정의하고 그 날짜를 제외한 모든 위대한 작품. 필자는 저장된 모델과 검색 한 모델의 날짜를 아직 저장되지 않은 모델의 날짜와 비교할 때 테스트 케이스에서 좀 이상한 것을 얻는다. 기본적으로 저장하기 전의 날짜는 "시간"클래스이고 이후에는 문자열입니다.

hstore는 문자열로 유지하지만 시간을 직렬화하는 방법을 알아내는 데 어려움이 있으므로 필드의 getter/setter에서 같은 방식으로 되돌릴 수 있습니다.

도움을 주시면 감사하겠습니다. 감사. 그것은 '그리고 to_s'를 사용하여 직렬화와 같은

답변

0

는 너무 예 Time#parse

+0

만큼 나는 그 시도하지만 그것도 나에게 문제를주고 있었다해야 다시 시간에 직렬화하기 위해 보인다. 내가가는 방법은 모든 타임 스탬프를 iso8601 문자열로 저장하고 해당 형식을 전달하는 유효성 검사기를 추가하는 것입니다. 내 애플 리케이션은 대부분 json API 역할을하기 때문에 UI를 위해 클라이언트 사이드 자바 스크립트를 사용하기 때문에 잘 동작 할 것이다. 내 데이터베이스에서 날짜 관련 쿼리를 만들 때 조정을해야 할 것입니다. – DArkO