module Genealogy::CurrentSpouseMethods

Module CurrentSpouseMethods provides methods to manage and query current spouse. It’s included by the genealogy enabled AR model

Public Instance Methods

add_current_spouse(spouse) click to toggle source

add current spouse updating receiver and argument individuals foreign_key in a transaction @param [Object] spouse @return [Boolean]

# File lib/genealogy/current_spouse_methods.rb, line 9
def add_current_spouse(spouse)

  raise_unless_current_spouse_enabled
  check_incompatible_relationship(:current_spouse,spouse)

  if gclass.perform_validation_enabled
    self.current_spouse = spouse
    spouse.current_spouse = self
    transaction do
      spouse.save!
      save!
    end
  else
    transaction do
      self.update_attribute(:current_spouse,spouse)
      spouse.update_attribute(:current_spouse,self)
    end
  end

end
ineligible_current_spouses() click to toggle source

list of individual who cannot be current spouse @return [Array]

# File lib/genealogy/current_spouse_methods.rb, line 52
def ineligible_current_spouses
  raise_unless_current_spouse_enabled
  self.gclass.send(ssex.to_s.pluralize)
end
remove_current_spouse() click to toggle source

remove current spouse resetting receiver and argument individuals foreign_key in a transaction @return [Boolean]

# File lib/genealogy/current_spouse_methods.rb, line 32
def remove_current_spouse
  raise_unless_current_spouse_enabled
  if gclass.perform_validation_enabled
    ex_current_spouse = current_spouse
    current_spouse.current_spouse = nil
    self.current_spouse = nil
    transaction do
      ex_current_spouse.save!
      save!
    end
  else
    transaction do
      current_spouse.update_attribute(:current_spouse,nil)
      self.update_attribute(:current_spouse,nil)
    end
  end
end

Private Instance Methods

raise_unless_current_spouse_enabled() click to toggle source
# File lib/genealogy/current_spouse_methods.rb, line 59
def raise_unless_current_spouse_enabled
  raise FeatureNotEnabled, "Spouse tracking not enabled. Enable it with option 'current_spouse: true' for has_parents method}" unless self.class.current_spouse_enabled
end