active_fedora icon indicating copy to clipboard operation
active_fedora copied to clipboard

Error using AF 14 with Rails 6.1

Open cjcolvar opened this issue 2 years ago • 0 comments

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

cjcolvar avatar Feb 08 '23 17:02 cjcolvar