add state machine to context including a closed state

This commit is contained in:
Reinier Balt 2013-02-27 22:35:49 +01:00
parent 3c6b1737c1
commit 99eed9f638
4 changed files with 93 additions and 28 deletions

View file

@ -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