在Rails中提供当前日期

时间:2010-08-12 07:01:36

标签: ruby-on-rails ruby datetime default-value

我想在创建新记录时向用户提供当前日期,并且我想允许他编辑提供的日期。例如,我编写了一个错误跟踪系统,我有一个date_of_detection字段。如果它是当前日期,99%的时间是好的,但是为了1%,应该允许用户编辑它并设置任何更早的日期。

我对任何黑客都很感兴趣,但最后我想有一个很好的方法去做。

3 个答案:

答案 0 :(得分:2)

除了斯洛博丹的answer之外,如果你最终在很多地方做这件事,并且只想在一个地方做这件事,你可以这样做:

class Bug < ActiveRecord::Base
  def initialize
    attributes = {:date_of_detection => Date.today}
    super attributes
  end
end

>> Bug.new.date_of_detection
=> Thu, 12 Aug 2010

答案 1 :(得分:2)

虽然不建议使用Swanands解决方案来覆盖activerecord对象的初始化,但可能会导致一些难以发现的错误。

after_initialize回调仅用于此目的。

class Bug < ActiveRecord::Base

  def after_initialize
    self.date_of_detection = Date.today if self.date_of_detection.nil?
  end
end

答案 2 :(得分:1)

在控制器中创建新错误时,只需设置date_of_detection的值即可。类似的东西:

@bug = Bug.new(:date_of_detection => Date.today)

# or something like this

@bug = Bug.new
@bug.date_of_detection = Date.today