相关疑难解决方法(0)

如何在rails中验证日期?

我想在Ruby on Rails中验证模型中的日期,但是,日期,月份和年份值在到达我的模型时已经转换为不正确的日期.

例如,如果我在我的视图中输入2009年2月31日,当我Model.new(params[:model])在我的控制器中使用时,它会将其转换为"2009年3月3日",然后我的模型将其视为有效日期,但它是不正确的.

我希望能够在我的模型中进行此验证.我有什么方法可以,或者我是否完全错了?

我发现这个" 日期验证 "讨论了这个问题,但它从未得到解决.

ruby validation ruby-on-rails date

90
推荐指数
5
解决办法
10万
查看次数

Rails日期检查是否可解析

我有一个日期时间选择器,它通过搜索框发送签入和签出日期。然后,URL看起来像;

http://localhost:3000/locations/listings?utf8=%E2%9C%93&search=london&start_date=12%2F04%2F16&end_date=20%2F04%2F16
Run Code Online (Sandbox Code Playgroud)

然后我将params散列并解析字符串,

start_date = Date.parse(params[:start_date])
end_date = Date.parse(params[:end_date])
Run Code Online (Sandbox Code Playgroud)

首先,我必须检查一下 if (start_date.present? && end_date.present?),并且工作正常。

但是,如果用户手动键入其他内容而不是日期,例如;

http://localhost:3000/locations/listings?utf8=%E2%9C%93&search=london&start_date=londoneye6&end_date=20%2F04%2F16 
Run Code Online (Sandbox Code Playgroud)

然后,我当然会出错。

invalid date
Run Code Online (Sandbox Code Playgroud)

我应该如何控制字符串是否可在控制器操作中解析。我还应该检查london-eye, london/eye字符串,其中包括- /

谢谢

string parsing ruby-on-rails date

3
推荐指数
2
解决办法
2640
查看次数

错误在“ Date#strtime”中?它解析一个月中超过30/31的天,使它们与年份混淆

为什么具有明确格式的strptime方法成功解析具有特定格式的日期字符串?

需要明确接受API的格式日期

$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
$ irb
irb(main):001:0> require 'date'
=> true
irb(main):002:0> Date.strptime('01-01-1970', '%Y-%m-%d')
=> #<Date: 0001-01-19 ((1721442j,0s,0n),+0s,2299161j)>
irb(main):003:0> Date.strptime('01-01-1970', '%Y-%m-%d').to_s
=> "0001-01-19"
irb(main):004:0> Date.strptime('01-01-1970', '%Y-%m-%d').year
=> 1
irb(main):005:0> Date.strptime('01-01-1970', '%Y-%m-%d').day
=> 19

Run Code Online (Sandbox Code Playgroud)

期望:测试通过

it 'raises an exception when wrong format' do
 expect { Date.strptime('01-01-1970', '%Y-%m-%d') }.to raise_exception(ArgumentError, 'invalid format')
end
Run Code Online (Sandbox Code Playgroud)

实际: expected ArgumentError with "invalid format" but nothing was raised

ruby date

0
推荐指数
1
解决办法
57
查看次数

标签 统计

date ×3

ruby ×2

ruby-on-rails ×2

parsing ×1

string ×1

validation ×1