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

带日期的虚拟属性

  •  0
  • holden  · 技术社区  · 14 年前

    第一部分有效。

      def date=(thedate)
         #puts the startdate in the correct format...
         self.startdate = Date.strptime(thedate, '%m/%d/%Y')
      end
    

    我遇到的问题是,结束日期是基于startdate+no_days,这本身就是一个虚拟属性。我试着把第二部分作为后验证回调来做,但似乎不起作用。

      def set_dates
        if self.startdate
          self.enddate = self.startdate + days
        end  
      end
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Yannis    14 年前

    首先,为什么需要在startdate中转换日期属性?你为什么不用一些像 f.date_select :startdate

    那么,在你的模型中你需要 attr_accessor :number_of_days 有了wich,你可以用 f.select :number_of_days, (1..10).to_a (根据需要设置数组)。

    您可以按以下方式设置回调:

    after_validation :set_enddate
    
    def set_enddate
      if self.startdate
        self.enddate = self.startdate + self.number_of_days.days
      end
    end