代码之家  ›  专栏  ›  技术社区  ›  Notinlist

在Rails中提供当前日期

  •  1
  • Notinlist  · 技术社区  · 14 年前

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

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

    3 回复  |  直到 14 年前
        1
  •  2
  •   Community uzul    7 年前

    除了Slobodan的 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
    
        2
  •  2
  •   Steve Weet    14 年前

    虽然Swanands解决方案可能会工作,但不建议覆盖ActiveRecord对象的初始化,这可能会导致一些难以找到的错误。

    初始化后的回调就是为了这个目的而存在的。

    class Bug < ActiveRecord::Base
    
      def after_initialize
        self.date_of_detection = Date.today if self.date_of_detection.nil?
      end
    end
    
        3
  •  1
  •   Slobodan Kovacevic    14 年前

    当您在控制器中创建一个新的bug时,只需设置\检测日期的值。类似:

    @bug = Bug.new(:date_of_detection => Date.today)
    
    # or something like this
    
    @bug = Bug.new
    @bug.date_of_detection = Date.today