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.
State machine is producing a false positive warnings like this:
It happens with correct machines when states have values and a there is a default value from the schema (or any other integration).
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.