lib/catissue/database.rb
def update_changed_dependent(owner, property, dependent, autogenerated)
      # Save the changed collectible event parameters directly rather than via a cascade.
      if CollectibleEventParameters === dependent then
        logger.debug { "Work around a caTissue bug by resaving the collected #{owner} #{dependent} directly rather than via a cascade..." }
        update_from_template(dependent)
      elsif CaTissue::User === owner and property.attribute == :address then
        update_user_address(owner, dependent)
      elsif CaTissue::Specimen === owner and CaTissue::Specimen === dependent then
        logger.debug { "Work around caTissue bug to update #{dependent} separately after the parent #{owner} update..." }
        prepare_specimen_for_update(dependent)
        update_from_template(dependent)
        logger.debug { "Updated the #{owner} child #{dependent}." }
      elsif CaTissue::ConsentTierStatus === dependent then
          update_from_template(owner)
      else
        super
      end
    end
def update_changed_dependent(owner, property, dependent, autogenerated)
      # Save the changed collectible event parameters directly rather than via a cascade.
      if CollectibleEventParameters === dependent then
        logger.debug { "Work around a caTissue bug by resaving the collected #{owner} #{dependent} directly rather than via a cascade..." }
        update_from_template(dependent)
      elsif CaTissue::User === owner and property.attribute == :address then
        update_user_address(owner, dependent)
      elsif CaTissue::Specimen === owner and CaTissue::Specimen === dependent then
        logger.debug { "Work around caTissue bug to update #{dependent} separately after the parent #{owner} update..." }
        prepare_specimen_for_update(dependent)
        update_from_template(dependent)
        logger.debug { "Updated the #{owner} child #{dependent}." }
      elsif CaTissue::ConsentTierStatus === dependent then
          update_from_template(owner)
      else
        super
      end
    end
def update_changed_dependent ( owner , property , dependent , autogenerated ) # Save the changed collectible event parameters directly rather than via a cascade. if CollectibleEventParameters === dependent then logger . debug { "Work around a caTissue bug by resaving the collected #{owner} #{dependent} directly rather than via a cascade..." } update_from_template ( dependent ) elsif CaTissue :: User === owner and property . attribute == :address then update_user_address ( owner , dependent ) elsif CaTissue :: Specimen === owner and CaTissue :: Specimen === dependent then logger . debug { "Work around caTissue bug to update #{dependent} separately after the parent #{owner} update..." } prepare_specimen_for_update ( dependent ) update_from_template ( dependent ) logger . debug { "Updated the #{owner} child #{dependent}." } elsif CaTissue :: ConsentTierStatus === dependent then update_from_template ( owner ) else super end end
Updates the given dependent.

 @quirk caTissue 1.2 user address update results in authorization error. Work-around is to
   create a new address record.

 @quirk caTissue Specimen update cascades to child update according to Hibernate, but
   caTissue somehow circumvents the child update. The child database content is not changed
   to reflect the update argument. Work-around is to update the child independently after
   the parent update.

 @quirk caTissue The aforementioned {#save_with_template} caTissue collectible event parameters
   dependent bug implies that the dependent must be saved directly rather than via a cascade
   from the Specimen or SCG owner to the referenced event parameters. The direct save avoids
   a tangled nest of obscure caTissue bugs described in the {#save_with_template} rubydoc.

 @quirk caTissue A SCG or Specimen consent tier status is not necessarily cascaded.
 @param (see CaRuby::Writer#update_changed_dependent)
Updates the given dependent .