0

start_at と end_at を含むイベント テーブルがあります。また、終日を表すブール値もあります。

イベントが終日である場合、ユーザーは時間というフィールドを入力します。しかし、start_at と end_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 に答える