Module: Genealogy::CurrentSpouseMethods

Extended by:
ActiveSupport::Concern
Defined in:
lib/genealogy/current_spouse_methods.rb

Overview

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

Instance Method Summary collapse

Instance Method Details

#add_current_spouse(spouse) ⇒ Boolean

add current spouse updating receiver and argument individuals foreign_key in a transaction

Parameters:

  • spouse (Object)

Returns:

  • (Boolean)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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_spousesArray

list of individual who cannot be current spouse

Returns:

  • (Array)


52
53
54
55
# 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_spouseBoolean

remove current spouse resetting receiver and argument individuals foreign_key in a transaction

Returns:

  • (Boolean)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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