app/models/flyboy/goal.rb in flyboy-1.0.4 vs app/models/flyboy/goal.rb in flyboy-1.0.5

- old
+ new

@@ -1,9 +1,14 @@ +require "dorsale/search" + module Flyboy class Goal < ActiveRecord::Base include AASM + include Dorsale::Search + paginates_per 50 + aasm(column: "status", whiny_transitions: false) do state :open, initial: true state :closed event :close, if: :no_undone_tasks? do @@ -20,19 +25,19 @@ validates :title, presence: true validates :status, inclusion: { in: proc { Flyboy::Goal.aasm.states.map(&:to_s) } } + def initialize(*args) + super + self.progress = 0 if progress.nil? + end + def no_undone_tasks? tasks.where(done: false).count == 0 end - def progress - return 0 if tasks.count.zero? - tasks.sum(:progress) / tasks.count - end - def revision "#{tracking} #{version}" end before_create :create_tracking @@ -46,7 +51,21 @@ def update_version self.version = 0 if self.version.nil? self.version = self.version + 1 end + + def update_progress + if tasks.count.zero? + self.progress = 0 + else + self.progress = tasks.sum(:progress) / tasks.count + end + end + + def update_progress! + update_progress + save + end + end end