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