我目前正在编写一个Rails应用程序,该应用程序使用已经使用了一段时间的数据库。例如,用于处理数据库的PHP代码能够使用日期时间“1999-00-00”。但是,ActiveRecord似乎不允许我使用该日期格式。
如果不在数据库中实际更改数据,处理此类数据的方法是什么?
有没有一颗宝石可以帮我解决这个问题?
编辑:答案如下。我们更改了数据库。答案 0 :(得分:0)
您可以使用Rails i18n格式化并显示日期:
I18n.localize(Time.now) # using :default format
I18n.localize(Time.now, :format => :short) # using short format
I18n.localize(Date.today) # using :default format
I18n.localize(Date.today, :format => :short) # using short format
答案 1 :(得分:0)
假设您想要1900年1月1日,您可以这样做:
>> your_field_before_type_cast = '1900-00-00'
=> "1900-00-00"
>> date = begin; Date.parse(your_field_before_type_cast); rescue ArgumentError; your_field_before_type_cast =~ /^(\d+)-/; Date.new($1.to_i, 1, 1); end
=> #<Date: 1900-01-01 ((2415021j,0s,0n),+0s,2299161j)>
因此会以
的形式出现在您的模型中def your_field
Date.parse your_field_before_type_cast
rescue ArgumentError
your_field_before_type_cast =~ /^(\d+)-/
Date.new($1.to_i, 1, 1)
end
可能?
答案 2 :(得分:0)
好吧,所以公司决定更改数据库中的数据。谢谢你的建议。