Open kreintjes opened 2 years ago
I'm also hitting the "can't modify Frozen Hash" on Rails 6.1.4.4
.
My annotate
gem actually triggered the error and adding some tracing to the call links it back to state_machine. We also did not have this issue until we updated rails.
Same here from Rails 6.0.5
to 6.1.6
. Any advice here?
Seeing the same thing here. We make use of column_defaults
and you can see that as of Rails 6.1, it was changed to freeze the returned Hash:
https://github.com/rails/rails/commit/c9c293e19464c9ce37316f2d917ac123d7b654e6
A number of Hashes were frozen in this commit. Still not sure of a workaround yet but at least we know where it came from and maybe even why.
FYI, since this gem hasn't been updated in 10 years, we updated to the state_machines
gem (notice the plural "s" there). Specifically, we used the ActiveRecord integration gem called state_machines-activerecord
.
What's super nice is that it's a drop-in replacement.
We're still conducting testing but it seems to fix our issue on Rails 6.1.
Seeing the same thing here. We make use of
column_defaults
and you can see that as of Rails 6.1, it was changed to freeze the returned Hash:A number of Hashes were frozen in this commit. Still not sure of a workaround yet but at least we know where it came from and maybe even why.
Just tried this. Swapped in state_machines-activerecord
. All my tests that were failing due to this issue are now passing.
Calling
.new
on an ActiveRecord Single Table Inheritance model with a state_machine defined results in a "FrozenError: can't modify frozen Hash" since Rails 6.1.Example, suppose we have the following model:
which has a state and type column (the latter enabling STI) and some subclasses extending from Car. We would expect
Car.new
to return a new Car instance, but instead it crashes with "FrozenError: can't modify frozen Hash:".Rails version: 6.1.4.1 Ruby version: 2.7.3 State machine version: 1.2.0
This did work in Rails 6.0 and before.