1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00
aasm/spec/models/mongoid/validator_mongoid.rb
2017-02-24 13:01:23 +05:30

100 lines
1.9 KiB
Ruby

class ValidatorMongoid
include Mongoid::Document
include AASM
field :name
field :status
attr_accessor :invalid
validate do |model|
errors.add(:validator, "invalid") if invalid
end
include AASM
aasm :column => :status, :whiny_persistence => true do
before_all_transactions :before_all_transactions
after_all_transactions :after_all_transactions
state :sleeping, :initial => true
state :running
state :failed, :after_enter => :fail
event :run, :after_commit => :change_name! do
transitions :to => :running, :from => :sleeping
end
event :sleep do
after_commit do |name|
change_name_on_sleep name
end
transitions :to => :sleeping, :from => :running
end
event :fail do
transitions :to => :failed, :from => [:sleeping, :running]
end
end
validates_presence_of :name
def change_name!
self.name = "name changed"
save!
end
def change_name_on_sleep name
self.name = name
save!
end
def fail
raise StandardError.new('failed on purpose')
end
end
class MultipleValidatorMongoid
include Mongoid::Document
include AASM
field :name
field :status
attr_accessor :invalid
aasm :left, :column => :status, :whiny_persistence => true do
state :sleeping, :initial => true
state :running
state :failed, :after_enter => :fail
event :run, :after_commit => :change_name! do
transitions :to => :running, :from => :sleeping
end
event :sleep do
after_commit do |name|
change_name_on_sleep name
end
transitions :to => :sleeping, :from => :running
end
event :fail do
transitions :to => :failed, :from => [:sleeping, :running]
end
end
validates_presence_of :name
def change_name!
self.name = "name changed"
save!
end
def change_name_on_sleep name
self.name = name
save!
end
def fail
raise StandardError.new('failed on purpose')
end
end