lib/active_fedora/with_metadata/default_strategy.rb



module ActiveFedora::WithMetadata
  class DefaultStrategy < ActiveTriples::ExtensionStrategy
    # override apply method to check if property already exists or receiver already has predicate defined.
    # Do not add property if the rdf_resource already responds to the property name
    # Do not add property if the rdf_resource already has a property with the same predicate.
    def self.apply(resource, property)
      return if resource.respond_to?(property.name)
      return if resource.properties.any? { |p| p[1].predicate == property.predicate }
      resource.property property.name, property.to_h
    end
  end
end