Sha256: bb4cb0d9440c6eae15d55c331cefaa1f461f098f5528dad0bec74f8ca8a714d2
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
module Flyboy class Goal < ActiveRecord::Base include AASM aasm(column: "status", whiny_transitions: false) do state :open, initial: true state :closed event :close, if: :no_undone_tasks? do transitions from: [:open], to: :closed end event :open do transitions from: [:closed], to: :open end end has_many :tasks, dependent: :destroy validates :title, presence: true validates :status, inclusion: { in: proc { Flyboy::Goal.aasm.states.map(&:to_s) } } 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 def create_tracking dailycounter = Goal.where("DATE(created_at) = ?", Date.today).count + 1 self.tracking = "#{Time.now.strftime("%y%m%d")}-#{dailycounter}" end before_save :update_version def update_version self.version = 0 if self.version.nil? self.version = self.version + 1 end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
flyboy-1.0.4 | app/models/flyboy/goal.rb |
flyboy-1.0.3 | app/models/flyboy/goal.rb |
flyboy-1.0.2 | app/models/flyboy/goal.rb |