У меня была эта проблема в течение нескольких дней, и я не мог найти никакого решения для этого.Кажется, что я не могу изменить формат даты (& 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/ree-1.8.7-2011.03@v3/gems/mongoid-2.0.2/lib/mongoid/extensions/date/conversions.rb:18:in `convert_to_time'
from /Users/pww/.rvm/gems/ree-1.8.7-2011.03@v3/gems/mongoid-2.0.2/lib/mongoid/extensions/time_conversions.rb:6:in `set'
from /Users/pww/.rvm/gems/ree-1.8.7-2011.03@v3/gems/mongoid-2.0.2/lib/mongoid/field.rb:109:in `set'
from /Users/pww/.rvm/gems/ree-1.8.7-2011.03@v3/gems/mongoid-2.0.2/lib/mongoid/attributes.rb:182:in `typed_value_for'
from /Users/pww/.rvm/gems/ree-1.8.7-2011.03@v3/gems/mongoid-2.0.2/lib/mongoid/attributes.rb:96:in `write_attribute'
from /Users/pww/.rvm/gems/ree-1.8.7-2011.03@v3/gems/mongoid-2.0.2/lib/mongoid/fields.rb:161:in `deadline='
from (irb):11
Дело в том, что я попытался изменить формат Mongoid Date по умолчанию несколькими способами, включая
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), что больше относится к часовому поясу даты.
Любая помощь и информация с благодарностью.
Спасибо.