pluginaweek/state_machine — pull request #293 by wrozka (2013-12-16 12:52:51+00:00)
Title: Silence uneccessary warning with default state with value

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).

```ruby
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.