active_fedora
active_fedora copied to clipboard
Error using AF 14 with Rails 6.1
When running Avalon's test suite I'm seeing the following error:
FrozenError:
can't modify frozen Array: ["field is required."]
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:249:in `block in association_valid?'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:246:in `association_valid?'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:233:in `block in validate_collection_association'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:233:in `each'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:233:in `validate_collection_association'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:147:in `block in define_autosave_association_callbacks'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:105:in `instance_eval'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/autosave_association.rb:105:in `block in define_non_cyclic_method'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/validations.rb:100:in `block in run_validations!'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/validations.rb:100:in `run_validations!'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/validations.rb:69:in `valid?'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/validations.rb:93:in `perform_validations'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/validations.rb:50:in `save'
# /usr/local/bundle/gems/active-fedora-14.0.0/lib/active_fedora/associations/builder/orders.rb:44:in `save'
# ./app/models/master_file.rb:248:in `media_object='
I think this could be resolved by avoiding modification of the frozen array by using += instead of << and .uniq instead of .uniq! on https://github.com/samvera/active_fedora/blob/8e7d365a087974b4ff9b9217f792c0c049789de6/lib/active_fedora/autosave_association.rb#L248-L249