diff --git a/app/models/master_file.rb b/app/models/master_file.rb index 1eb26b69e4..de3e8bf9d8 100644 --- a/app/models/master_file.rb +++ b/app/models/master_file.rb @@ -770,8 +770,8 @@ def find_encoder_class(klass_name) def update_parent! return unless media_object.present? + media_object.master_files.delete(self) media_object.ordered_master_files.delete(self) - media_object.master_files = media_object.ordered_master_files.to_a media_object.set_media_types! media_object.set_duration! if !media_object.save diff --git a/app/models/media_object.rb b/app/models/media_object.rb index 5ecc69efb3..23cbab7953 100644 --- a/app/models/media_object.rb +++ b/app/models/media_object.rb @@ -129,15 +129,6 @@ def published? !avalon_publisher.blank? end - alias_method :'_master_files=', :'master_files=' - define_attribute_methods :master_files - def master_files=(mfs) - master_files_will_change! - ids = mfs.map(&:id).reject(&:blank?) - self.ldp_source.graph.set_value(::RDF::Vocab::DC.hasPart, ids) - self._master_files = mfs - end - def destroy # attempt to stop the matterhorn processing job self.master_files.each(&:stop_processing!) diff --git a/config/initializers/active_fedora_general.rb b/config/initializers/active_fedora_general.rb index 9539c6329e..dd7fced447 100644 --- a/config/initializers/active_fedora_general.rb +++ b/config/initializers/active_fedora_general.rb @@ -150,3 +150,32 @@ def changes end end end + +ActiveFedora::Associations::IndirectlyContainsAssociation.class_eval do + def insert_record(record, force = true, validate = true) + container.save! + if force + record.save! + else + return false unless record.save(validate: validate) + end + + save_through_record(record) + + owner.send(:attribute_will_change!, reflection.name) + owner.resource << ::RDF::Statement(owner.resource, reflection.predicate, record.id) + owner.save + + true + end + + private + + def delete_record(record) + record_proxy_finder.find(record).delete + + owner.send(:attribute_will_change!, reflection.name) + owner.resource.delete({ predicate: reflection.predicate, object: record.id}) + owner.save + end +end