如何检查日期是否有效?

Em *_*Sta 4 ruby ruby-on-rails

我的代码看起来像:

if f.thisyear.blank? &&  Date.new(Date.today.year, f.birthday.month, f.birthday.mday ).valid_date?
  f.update_attribute :thisyear, Date.new(Date.today.year, f.birthday.month, f.birthday.mday )
end
Run Code Online (Sandbox Code Playgroud)

在第一行中,我使用以下方法检查有效日期:

Date.new(Date.today.year, f.birthday.month, f.birthday.mday ).valid_date?
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

`new': invalid date (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

如何编写代码以避免此问题?

Ste*_*fan 13

Date::valid_date?是一个方法,所以代替

Date.new(Date.today.year, f.birthday.month, f.birthday.mday).valid_date?
Run Code Online (Sandbox Code Playgroud)

使用

Date.valid_date?(Date.today.year, f.birthday.month, f.birthday.mday)
Run Code Online (Sandbox Code Playgroud)