2015-05-09 50 views
0

我正在嘗試持續具有時間類型字段的對象。創建時,我嘗試將sleep_value設置爲有效的時間對象,但保存似乎無提示失敗(即使raise_on_save_failure設置爲true)。data_mapper:無法保存時間對象

如果我嘗試通過Sleep.allSleep.get(1)搜索對象,則出現錯誤argument out of range

我可以通過它來保持它的唯一價值是Time.now()。如果我做了Sleep.all,則返回該對象sleep_time => Time.now

gems:  
data_mapper (1.2.0) 
sqlite3 (1.3.10) 


require 'sqlite3' 
require 'data_mapper' 

DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/test.db") 

DataMapper::Model.raise_on_save_failure = true 

class Sleep 

    include DataMapper::Resource 
    property :id,   Serial 
    property :sleep_time, Time 

end 

DataMapper.finalize.auto_migrate! 

Sleep.create(:sleep_time => Time.new(2015, 10, 1)) 

Sleep.all 

更新:我已經做更多的試驗和錯誤,並發現以下值與時間字段兼容

Sleep.create(:st => (Time.now - 1)) 
Sleep.create(:st => Time.at((Time.now - Time.at(1000)))) 

(從SLEEP_TIME聖更名)和以下值不保存(不會引發錯誤,但記錄NT堅持)

Sleep.create(:st => Time.new(2015, 10, 1, 2, 2, 2, "+02:00")) 
Sleep.create(:st => Time.new(2002)) 
Sleep.create(:st => Time.new((Time.now - Time.new(2002)))) #out of range 
Sleep.create(:st => Time.at(2)) #out of range 

回答

0

我用()的事實,我可以Time.now使用,使這個helper方法。我稱它爲保存我的時間屬性。

DEF self.convert_to_dm_friendly_time(target_time)

today = Time.now 
return today + target_time.to_i - today.to_i #basically starting the object from today and then taking today out. 

end 

媽的,這是一個醜陋的解決方案。當然有更簡單的方法?

相關問題