Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails `新';:无效日期(参数错误)_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails `新';:无效日期(参数错误)

Ruby on rails `新';:无效日期(参数错误),ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,好吧,对于一个日期为的函数,我不知怎么得到了这个错误: C:/geburtstag/app/config/initializers/update_year.rb:11:in `new': invalid date ( ArgumentError) from C:/geburtstag/app/config/initializers/update_year.rb:11:in `block i n <top (required)>' 第11行: f.update_at

好吧,对于一个日期为的函数,我不知怎么得到了这个错误:

C:/geburtstag/app/config/initializers/update_year.rb:11:in `new': invalid date (
ArgumentError)
    from C:/geburtstag/app/config/initializers/update_year.rb:11:in `block i
    n <top (required)>' 
第11行:

f.update_attribute :thisyear, Date.new(Date.today.year, f.birthday.month,  f.birthday.mday )
我不明白为什么我会犯这个错误!!所以我在控制台上做了一些测试,一切正常!我希望你能帮助我!谢谢

irb(main):005:0> c = Patient.find(24367)
←[1m←[36mPatient Load (0.0ms)←[0m  ←[1mSELECT "patients".* FROM "patients" WHE
RE "patients"."id" = ? LIMIT 1←[0m  [["id", 24367]]
=> #<Patient id: 24367, vorname: "Hanz", nachname: "Schnitzel", birthday: "1961-06
-29", geschlecht: "1", drucken: nil, extraanrede: nil, extratext: nil, year: nil
, rund: nil, thisyear: nil, zuletzt: nil, strasse: "Lsu 15", ort: "W÷rth", pl
z: "93386", created_at: "2013-09-19 16:37:28", updated_at: "2013-09-19 16:37:28"
>
irb(main):006:0> b = Patient.birthday
irb(main):007:0> d = c.birthday
=> Thu, 29 Jun 1961
irb(main):009:0> month = d.month
=> 6
irb(main):010:0> day = d.mday
=> 29
irb(main):011:0> year = Date.today.year
=> 2013
irb(main):012:0> neu = Date.new(year,month,day)
=> Sat, 29 Jun 2013
irb(main):005:0>c=Patient.find(24367)
←[1m←[36M患者负荷(0.0ms)←[0m←[1从“患者”中选择“患者”。*
关于“患者”,“id”=?限制1←[0m[[“id”,24367]]
=> #
irb(主):006:0>b=患者生日
irb(主):007:0>d=c
=>1961年6月29日星期四
irb(主):009:0>月=d月
=> 6
irb(主要):010:0>天=日
=> 29
irb(主):011:0>年=日期.今天.年
=> 2013
irb(主):012:0>neu=Date.new(年、月、日)
=>Sat,2013年6月29日

您试图用无效参数实例化
日期
对象,例如

Date.new(2013,99,1)
# => ArgumentError: invalid date
您的问题很可能不是上面的代码,而是插入的数据。请检查数据库中是否有日期无效的记录

您可以通过在提交日期无效时向用户显示错误来防止此类错误。为了实现这一点,您可以在模型中添加验证规则,例如

class Patient < ActiveRecord::Base
  validate :birthday, if:->(d){ Date.valid_date?(d) }
end
class Patient(d){Date.valid_Date?(d)}
结束

你确定所有的
生日
字段都是有效日期吗?例如,某人的
生日在
1981-13-32
上。另一种可能是闰年问题。某人的生日是一年中的2月29日,对当前年份无效。我如何检查这一点,如果是这种情况,跳过这个患者?嘿,你正在发布一篇文章请避免这样做,单独创建日期并使用rescue…
this_year=date.new(…)rescue nil
@MrYoshiji别担心,这是假的!我怎么能这样写:
date.new(Date.today.year,f.birth.month,f.birth.mday)。有效日期?
有效日期?
是一个类方法,只需执行
日期。有效日期?(Date.today.year,f.birth.month,f.birth.mday)
class Patient < ActiveRecord::Base
  validate :birthday, if:->(d){ Date.valid_date?(d) }
end