
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 AMAn oddity: after a state transition, read_attributereturns the correct value even thoughstatedoesn'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 AMThe problem was that I was using alias_attributeinstead ofaasm_column:# wrong class Item include AASM alias_attribute :aasm_state, :state end # right class Item include AASM self.aasm_column :state endAASM 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.
 Create new ticket
                    Create new ticket
 Gaius Centus Novus
      Gaius Centus Novus