lib/catissue/domain/specimen_position.rb
def saver_proxy
      # Look for a transfer event that matches the position.
      xfr = specimen.event_parameters.detect do |sep|
        CaTissue::TransferEventParameters === sep and sep.to == location
      end
      # Create a new transfer event, if necessary.
      xfr ||= CaTissue::TransferEventParameters.new(:specimen => specimen, :to => location)
      # If this position changed, then copy the original position to the transfer event from attributes.
      if snapshot and changed? then
        xfr.from_storage_container = snapshot[:storage_container]
        xfr.from_position_dimension_one = snapshot[:position_dimension_one]
        xfr.from_position_dimension_two = snapshot[:position_dimension_two]
      end
      xfr
    end
def saver_proxy
      # Look for a transfer event that matches the position.
      xfr = specimen.event_parameters.detect do |sep|
        CaTissue::TransferEventParameters === sep and sep.to == location
      end
      # Create a new transfer event, if necessary.
      xfr ||= CaTissue::TransferEventParameters.new(:specimen => specimen, :to => location)
      # If this position changed, then copy the original position to the transfer event from attributes.
      if snapshot and changed? then
        xfr.from_storage_container = snapshot[:storage_container]
        xfr.from_position_dimension_one = snapshot[:position_dimension_one]
        xfr.from_position_dimension_two = snapshot[:position_dimension_two]
      end
      xfr
    end
Returns a TransferEventParameters which serves as a proxy for saving this SpecimenPosition.

 @quirk caTissue caTissue does not allow saving a SpecimenPosition directly in the database.
   Creating a TransferEventParameters sets the SpecimenPosition as a side-effect. Therefore,
   SpecimenPosition save is accomplished by creating a proxy TransferEventParameters instead.