mirror of
https://github.com/TracksApp/tracks.git
synced 2026-02-16 12:18:07 +01:00
add state machine to context including a closed state
This commit is contained in:
parent
3c6b1737c1
commit
99eed9f638
4 changed files with 93 additions and 28 deletions
|
|
@ -5,11 +5,32 @@ class Context < ActiveRecord::Base
|
|||
has_many :recurring_todos, :dependent => :delete_all
|
||||
belongs_to :user
|
||||
|
||||
scope :active, :conditions => { :hide => false }
|
||||
scope :hidden, :conditions => { :hide => true }
|
||||
scope :active, :conditions => { :state => :active }
|
||||
scope :hidden, :conditions => { :state => :hide }
|
||||
|
||||
acts_as_list :scope => :user, :top_of_list => 0
|
||||
|
||||
# state machine
|
||||
include AASM
|
||||
aasm_column :state
|
||||
aasm_initial_state :active
|
||||
|
||||
aasm_state :active
|
||||
aasm_state :closed
|
||||
aasm_state :hidden
|
||||
|
||||
aasm_event :close do
|
||||
transitions :to => :closed, :from => [:active, :hidden], :guard => :no_active_todos?
|
||||
end
|
||||
|
||||
aasm_event :hide do
|
||||
transitions :to => :hidden, :from => [:active, :closed]
|
||||
end
|
||||
|
||||
aasm_event :activate do
|
||||
transitions :to => :active, :from => [:closed, :hidden]
|
||||
end
|
||||
|
||||
attr_protected :user
|
||||
|
||||
validates_presence_of :name, :message => "context must have a name"
|
||||
|
|
@ -20,10 +41,6 @@ class Context < ActiveRecord::Base
|
|||
NullContext.new
|
||||
end
|
||||
|
||||
def hidden?
|
||||
self.hide == true || self.hide == 1
|
||||
end
|
||||
|
||||
def title
|
||||
name
|
||||
end
|
||||
|
|
@ -32,6 +49,10 @@ class Context < ActiveRecord::Base
|
|||
@new_record_before_save
|
||||
end
|
||||
|
||||
def no_active_todos?
|
||||
return todos.active.count == 0
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class NullContext
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue