DmitryTsepelev/store_model

NoMethodError serialize_unknown_attributes? on upgrading to 3.0.0

phinze opened this issue · 3 comments

When upgrading to 3.0.0, I see a lot of test failures on a model with an enum:

NoMethodError: undefined method `serialize_unknown_attributes?' for nil:NilClass

I believe #173 will fix it, but I figured it was worth making a quick issue to track the problem too.

bf4 commented

Thanks @phinze for making this issue. Came here to see if there was anything after I couldn't see anything obvious in the changelog or diff.

For me, tests pass on 5aedf27
and fail on 1a8eb48

the current head ref for me is still broken

technically in my case it's in lib/store_model/types/many_base.rb

with the change

     def serialize(value)
        case value
        when Array
-          ActiveSupport::JSON.encode(value, serialize_unknown_attributes: true)
+          return ActiveSupport::JSON.encode(value) unless value.all? { |v| v.is_a?(StoreModel::Model) }
+
+          ActiveSupport::JSON.encode(value,
+                                     serialize_unknown_attributes: value.first.serialize_unknown_attributes?,
+                                     serialize_enums_using_as_json: value.first.serialize_enums_using_as_json?)

when value #=> [] is an empty array

bf4 commented

Happened to get my head in the space and found the fix #176 Not sure about the test. Having trouble getting all tests to pass, but my new test passes 🤷

Thank you all for help! The first PR is merged and I'm gonna to merge a second one right now. Please reach out if something is off 🙂