Closed Supernich closed 1 year ago
In case it's helpful for anyone else, this change caused an exception in our application.
We were using accepts_nested_attributes_for
in the following format and it was working correctly on store_model
version 2.1.1
: accepts_nested_attributes_for [:categories, { allow_destroy: true }]
After upgrading to store_model
2.1.2
, we started seeing this error: super: no superclass method 'accepts_nested_attributes_for' for OurAppClass:Class
Changing the accepts_nested_attributes_for
to the following format fixed the issue: accepts_nested_attributes_for :categories, allow_destroy: true
Not a big deal, but I wanted to share in case anyone else runs into it.
Override of accepts_nested_attributes_for was calling for attribute_types method which is taking attribute types from schema if your model is active-record, which will not work when you do not yet have db prepared or your new model is not yet created in database but you already declared everything in your model's class. In some cases it was preventing of 'rails db:create' and 'rails db:migrate'
Override of assign_nested_attributes_for_collection_association was accepting more arguments than it's super method declared in active record, which was breaking one_to_many relations with accept_nested_attributes_for this relation.
Also, plain rails do not support per relation declaration of options for accepts_nested_attributes_for (https://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for) e.g. so i don't see the reason why it should be there to potentially break default behaviour.
Fix accepts_nested_attributes_for raising error when database is not initialized or table for model doesnt exist
Fix assign_nested_attributes_for_collection_association override breaking ActiveRecord::Base#accepts_nested_attributes_for for non storemodel relations