2013-05-10 3 views
0

Как использовать значения datetime и сохранять и извлекать их с помощью HStore?Rails Hstore dateTime saving

Я использую это:

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/seters для поля.

Любая помощь приветствуется. Благодарю.

ответ

0

Похоже, упорядочивает его с помощью «to_s», так десериализации его обратно Время экземпляра Time#parse должно быть достаточно

+0

Я попробовал это, но это также дает мне проблемы. Я поступил так, что я сохранил все временные метки как строки iso8601 и добавил валидатор, чтобы передать этот формат. Мое приложение в основном действует как json API, потому что я использую javascript на стороне клиента для пользовательского интерфейса, поэтому он будет делать все отлично. Мне, вероятно, понадобится внести коррективы, когда я буду делать запросы по дате в моей базе данных – DArkO

Смежные вопросы