gpt4 book ai didi

ruby-on-rails - 为什么 Ruby 将日期类型中的 'foo' 解析为 01.01.1970

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:55 25 4
gpt4 key购买 nike

我在 Rails 应用程序中确实有一个具有以下定义的模型(我使用的是 Mongoid):

字段:日期,类型:日期

我将该字段包含在 View 中作为文本字段 (f.text_field)。如果我输入有效日期,一切正常。但是,当我在此字段中输入一些文本(例如“foo”)时,日期会被解析为 01.01.1970。我没有手动解析日期,而是使用以下代码:

@offer = Offer.new(offer_params)

我还检查了 Ruby 控制台:

>> offer = Offer.new
...

>> offer.date = 'foo'
"foo"

>> offer.date
Thu, 01 Jan 1970

>> offer.date.is_a? Date
true

如何防止这种行为,以便无法保存记录并向用户显示验证错误?

感谢您的帮助!

最佳答案

您可以修改 Offer 初始值设定项,使其使用 Date::parse解析日期的方法。当您提供给它的参数不是有效的日期格式时,这将抛出一个 ArgumentError。

您可能必须将其转换为自 1.1.1970 以来的秒数,因为这似乎是用于将日期存储在数据库中的格式。看看Date#strftime为此。

关于ruby-on-rails - 为什么 Ruby 将日期类型中的 'foo' 解析为 01.01.1970,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19466983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com