Skip to content

Conversation

wrozka
Copy link

@wrozka wrozka commented Dec 16, 2013

State machine is producing a false positive warnings like this:

Both `model class` and its :status machine have defined a different default for "status"

It happens with correct machines when states have values and a there is a default value from the schema (or any other integration).

class Request < ActiveRecord::Base
  # schema defines status as an int with default value of 0

  state_machine :status, :initial => :open do
    state :open, :value => 0
    state :closed, :value => 1
  end
end

This happens because at the moment of processing the :initial argument of the state_machine, the value of :open state is unknown (the block hasn't been evaluated yet), state with a default value (the state name) is created and it is compared with default value from schema (0) which produces the warning. Block with the definition of states is processed too late.

This problem can be fixed by setting the initial value as the very last thing that state machine constructor does. This way we can evaluate the block first in order to capture the correct values of states.

I believe this pull request closes: #285 and #279.

@changok
Copy link

changok commented Dec 19, 2013

Yes, this one is so annoying.

@jmatraszek
Copy link

Any chance to get that merged?

@danteoh
Copy link

danteoh commented Jan 20, 2014

+1

7 similar comments
@jarinudom
Copy link

+1

@zdavis
Copy link

zdavis commented Feb 22, 2014

+1

@devdazed
Copy link

👍

@tradziej
Copy link

👍

@gnapse
Copy link

gnapse commented May 28, 2014

👍

@edraut
Copy link

edraut commented Jun 4, 2014

👍

@chrisferry
Copy link

👍

@igkins
Copy link

igkins commented Jun 10, 2014

👍

1 similar comment
@gilgen
Copy link

gilgen commented Aug 12, 2014

👍

@mhuggins
Copy link

+1

3 similar comments
@mgrachev
Copy link

👍

@shlensky
Copy link

👍

@ethernetdan
Copy link

+1

@vickodin
Copy link

So nice queue of 👍 :)

P.S. subscribed

@angelsystem
Copy link

+1 please

@dmitry
Copy link

dmitry commented Jun 18, 2025

It would be nice to merge. Any counter-proposal?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Warning when using ActiveRecord and defaults are the same