Closed bgvo closed 1 year ago
I didn't have time to add documentation just yet. Happy to do it if the PR looks good.
@bgvo thanks. This looks great. Can you fix the lint issues. Then let's see if all tests are green.
@haffla Thank you for the excellent work. Lint issue fixed!
@bgvo can you please remove the change in the schema.rb
? It seems to break the test suite and is unrelated to this PR.
@haffla Done. Sorry about that.
I first found this thread and gave Rails enum a shot. It "seemed" to work, but it only did for
String
mappings. Even ifenum
was defined, when assigning attributes,jsonb_accessor
would update the jsonb with the value from the public getter, which returns the corresponding enum key (whatever that is) and not the actual value that should be stored in the database.This was first noticed by kg-currenxie.
Example
Given:
MyClass.create(my_enum_attribute: "Foo")
will store a jsonb with"Foo"
as value instead of1
.With the introduced changes, the actual value stored will be
1
.The use of enums with integers allows a ton of flexibility when it comes to altering existing enum keys. I'm in the middle of a migration and having enums defined with integers instead of strings makes things much easier.