在Rails中更改年份

che*_*ell 5 date ruby-on-rails-3

我有一个表格可以获得用户的生日.

我想过生日并将其存储在另一个属性中,但需要当年.

我在回电中这样做

模型板

before_save:set_delivery_date

def set_delivery_date

self.delivery_date = self.birthday
self.delivery_date.change(:year => Time.now.year)
end
Run Code Online (Sandbox Code Playgroud)

生日是1920-07-27

这似乎没有改变日期.

有人知道怎么做吗?

更新

以下工作我可以在数据库中看到新的日期:

 self.deliver_on = self.birthday.change(:year => Time.now.year)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试进行rspec测试或在控制台中尝试它时会产生以下错误:

ArgumentError: invalid date
Run Code Online (Sandbox Code Playgroud)

有人知道为什么会这样吗?

dex*_*ter 8

change方法返回一个更改了一个或多个元素的新日期实例.

试试这个:

def set_delivery_date
   self.delivery_date = self.birthday
   self.delivery_date = self.delivery_date.change(:year => Time.now.year)
end
Run Code Online (Sandbox Code Playgroud)

  • 观察闰年,例如 `date = Date.parse('29/02/2016'); date.change(year: date.year + 1) # => ArgumentError: 无效日期`. (4认同)