0

我目前正在编写一个使用已使用一段时间的数据库的 Rails 应用程序。例如,用于处理数据库的 PHP 代码能够使用“1999-00-00”的日期时间。但是,ActiveRecord 似乎不允许我使用该日期格式。

在不实际更改数据库中的情况下处理此类数据的方法是什么?

有没有我还没有发现的宝石可以帮助解决这个问题?

编辑:答案如下。我们更改了数据库。

4

3 回答 3

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
于 2013-07-10T18:40:41.320 回答
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

也许?

于 2013-07-10T18:40:50.137 回答
0

好的,所以公司决定更改数据库中的数据。谢谢你们的建议。

于 2013-07-10T18:43:02.723 回答