State Transitions Return true but do Nothing
Reported by Gaius Centus Novus | June 22nd, 2009 @ 10:40 AM
I have a class:
class Item < ActiveRecord::Base
include AASM
aasm_initial_state :available
aasm_state :available
aasm_state :in_use
aasm_event(:check_out) do
transitions :from => :available, :to => :in_use
end
aasm_event(:check_in) do
transitions :from => :in_use, :to => :available
end
end
This works:
i = Item.create!
i.write_attribute(:state, 'in_use')
# => "in_use"
i.save!
# => true
i.state
# => "in_use"
But this doesn't do anything:
i = Item.create!
i.check_out!
# => true
i.state
# => "available"
I'm on AASM 2.0.5 and Rails 2.3.2. I tried applying the patch for a (seemingly) related bug at http://www.pastie.org/444480 but that did nothing.
Comments and changes to this ticket
-
Gaius Centus Novus June 22nd, 2009 @ 11:54 AM
An oddity: after a state transition,
read_attribute
returns the correct value even thoughstate
doesn't:i = Item.create! i.check_out! i.state # => 'available' i.read_attribute(i.class.aasm_column) # => 'in_use'
-
Gaius Centus Novus June 22nd, 2009 @ 11:59 AM
The problem was that I was using
alias_attribute
instead ofaasm_column
:# wrong class Item include AASM alias_attribute :aasm_state, :state end # right class Item include AASM self.aasm_column :state end
AASM wrote to "
:aasm_state
," which I assumed would write through, but didn't.This ticket can be closed.
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
Library for adding state machines to Ruby classes. Includes persistence layers for things like ActiveRecord. Formerly known as acts_as_state_machine.