def merge_attributes(other, attributes=nil, matches=nil, &filter)
      if Hash === other then
        # take the transitive closure of the specimens
        spcs = other.delete(:specimens)
        if spcs then
          spcs = [spcs] if CaTissue::Specimen === spcs
          # take the transitive closure of the root specimens in the hierarchy
          other[:specimens] = spcs.select { |spc| spc.parent.nil? }.transitive_closure(:children)
        end
      end
      # delegate to Collectible
      super
    end
def merge_attributes(other, attributes=nil, matches=nil, &filter)
      if Hash === other then
        
        spcs = other.delete(:specimens)
        if spcs then
          spcs = [spcs] if CaTissue::Specimen === spcs
          
          other[:specimens] = spcs.select { |spc| spc.parent.nil? }.transitive_closure(:children)
        end
      end
      
      super
    end
def merge_attributes ( other , attributes = nil , matches = nil , & filter ) if Hash === other then # take the transitive closure of the specimens spcs = other . delete ( :specimens ) if spcs then spcs = [ spcs ] if CaTissue :: Specimen === spcs # take the transitive closure of the root specimens in the hierarchy other [ :specimens ] = spcs . select { | spc | spc . parent . nil? } . transitive_closure ( :children ) end end # delegate to Collectible super end
Merges the other object into this SpecimenCollectionGroup. This method augments
 {CaTissue::Collectible#merge_attributes} as follows:
 * Adds the transitive closure of each non-derived Specimen in the source.

 @param (see CaTissue::Collectible#merge_attributes)
 @option (see CaTissue::Collectible#merge_attributes)
Merges the other object into this SpecimenCollectionGroup . This method augments { CaTissue :: Collectible#merge_attributes } as follows : * Adds the transitive closure of each non - derived Specimen in the source .