我一直有這個問題幾天,找不到任何解決方案。看來,我不能改變一個字段的日期(&日期時間)的格式在Mongoid文檔Mongoid Date(DateTime)字段未正確解析以存儲到數據庫
class Project
include Mongoid::Document
field :deadline, :type => Date
end
然後我可以指定日期如下:
p = Project.new
p.deadline = "20-10-2011"
但我不能指定的其它格式:
p.deadline = "20/10/2011"
ArgumentError: invalid date
from /Users/pww/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/date.rb:956:in `new_by_frags'
from /Users/pww/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/date.rb:1000:in `parse'
from /Users/pww/.rvm/gems/[email protected]/gems/mongoid-2.0.2/lib/mongoid/extensions/date/conversions.rb:18:in `convert_to_time'
from /Users/pww/.rvm/gems/[email protected]/gems/mongoid-2.0.2/lib/mongoid/extensions/time_conversions.rb:6:in `set'
from /Users/pww/.rvm/gems/[email protected]/gems/mongoid-2.0.2/lib/mongoid/field.rb:109:in `set'
from /Users/pww/.rvm/gems/[email protected]/gems/mongoid-2.0.2/lib/mongoid/attributes.rb:182:in `typed_value_for'
from /Users/pww/.rvm/gems/[email protected]/gems/mongoid-2.0.2/lib/mongoid/attributes.rb:96:in `write_attribute'
from /Users/pww/.rvm/gems/[email protected]/gems/mongoid-2.0.2/lib/mongoid/fields.rb:161:in `deadline='
from (irb):11
事情是我試圖改變Mongoid日期的默認格式在幾個方面,包括
Date::DATE_FORMATS[:default] = "%d/%m/%Y"
它能夠以該格式顯示數據,但不能以格式存儲數據。我試着用本地化文件如下:
date:
formats:
default: "%d/%m/%Y"
short: "%b %d"
long: "%B %d %Y"
它也不起作用。這可能是我不知道如何正確使用它,但這可能是Mongoid的一個問題。
我使用:
Mongoid (2.0.2)
Rails (3.0.6)
ree (1.8.7-2011.03)
我意識到這一點(https://github.com/mongoid/mongoid/issues/53),這更是一個日期時區的問題。
任何幫助和信息將不勝感激。
謝謝。
嗯...它正常工作與 「20-10-2011」 字符串沒有正確的解析。我知道我可以像你說的那樣手動解析它們。但是必須有一種方法可以將其中一種格式設置爲默認格式,以供Mongoid使用。 – 2011-05-27 14:19:48