Sha256: 5aa4dab3a845aaae7e34a2727b5c4893992b438e89c5a1aa84e74d909a40f452

Contents?: true

Size: 1.39 KB

Versions: 19

Compression:

Stored size: 1.39 KB

Contents

module ActiveFedora
  module Associations
    class BelongsToAssociation < AssociationProxy #:nodoc:
      def replace(record)
        if record.nil?
          ### TODO a more efficient way of doing this would be to write a clear_relationship method
          old_record = find_target
          @owner.remove_relationship(@reflection.options[:property], old_record) unless old_record.nil?
        else
          raise_on_type_mismatch(record)

          ### TODO a more efficient way of doing this would be to write a clear_relationship method
          old_record = find_target
          @owner.remove_relationship(@reflection.options[:property], old_record) unless old_record.nil?

          @target = (AssociationProxy === record ? record.target : record)
          @owner.add_relationship(@reflection.options[:property], record) unless record.new_record?
          @updated = true
        end

        loaded
        record
      end

      private
        def find_target
          pid = @owner.ids_for_outbound(@reflection.options[:property]).first
          return if pid.nil?
          query = ActiveFedora::SolrService.construct_query_for_pids([pid])
          solr_result = SolrService.query(query) 
          return ActiveFedora::SolrService.reify_solr_results(solr_result).first
        end

        def foreign_key_present
          !@owner.send(@reflection.primary_key_name).nil?
        end

    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
active-fedora-4.0.0.rc20 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc19 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc18 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc17 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc16 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc15 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc14 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc13 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc12 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc11 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc10 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc9 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc8 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc7 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc6 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc5 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc4 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc3 lib/active_fedora/associations/belongs_to_association.rb
active-fedora-4.0.0.rc2 lib/active_fedora/associations/belongs_to_association.rb