0

我有一个包含 start_at 和 ends_at 的事件表。它也有一个布尔值用于全天。

如果事件是全天,则用户输入一个名为小时的字段。但是,如果他们输入 start_at 和 ends_at,我想计算并保存在小时字段中。

英语(不是 Ruby):

If event.allday = > true
  hours = ends_at - starts_at

这样,我就不必在我拥有的所有不同显示页面中计算它,并且更容易求和。

或者——这个逻辑会进入模型吗?

谢谢!

更新 - - - - - -

我尝试将其放入模型中:

  before_save :calculate_hours

  def calculate_hours
    if self.allday != true
      self.hours = ((self.ends_at - self.starts_at)/ 3600).to_f.round(2)
    end
 end
4

1 回答 1

2

业务逻辑始终属于模型。

class Event < ActiveRecord::Base
  before_validation :set_hours

  private
    def set_hours
      if allday?
        self.hours = ends_at - starts_at
      end
    end
end
于 2012-12-18T20:26:18.163 回答