Rails - 如何更改created_at时间?

Rai*_*ner 7 ruby ruby-on-rails ruby-on-rails-3

在我的控制器中我有:

@konkurrencer = Rating.new(params[:kon])
@konkurrencer.save
@konkurrencer.konkurrencer.rating_score += params[:kon][:ratings].to_i
@konkurrencer.konkurrencer.ratings += 1
@konkurrencer.created_at = Time.now.strftime("%Y-%m-%d 00:00:00")
@konkurrencer.save
Run Code Online (Sandbox Code Playgroud)

当我创建一个新项时,created_at列是:

2012-02-27 16:35:18
Run Code Online (Sandbox Code Playgroud)

我希望它是:

2012-02-27 00:00:00
Run Code Online (Sandbox Code Playgroud)

The*_*hop 18

你的问题是strftime只格式化时间,它实际上并没有改变时间.

所以当你做Time.now时,会返回时间.Strftime只改变它所代表的方式.

如果要将created_at日期更改为"2012-02-27 00:00:00",只需将其传递给 @koncurrencer.created_at

@koncurrencer.created_at = "2012-02-27 00:00:00"
Run Code Online (Sandbox Code Playgroud)

应该这样做.

回答你的问题:

你在做什么应该工作得很好.事实上你可以说:

@koncurrencer.created_at = Time.now  
@koncurrencer.save
Run Code Online (Sandbox Code Playgroud)

这应该工作得很好.

如果你想总是把时间放在当天的开头,你可以使用Date.today而不是Time.now因为那总是将Date的时间组件返回为"00:00:00"

这是你想要的:

@koncurrencer.created_at = Date.today  
@koncurrencer.save
Run Code Online (Sandbox Code Playgroud)

那应该更清楚了.