Class: Dorsale::CustomerVault::Person

Inherits:
ApplicationRecord show all
Extended by:
Forwardable
Includes:
Agilibox::Search, Users::Avatar
Defined in:
app/models/dorsale/customer_vault/person.rb

Direct Known Subclasses

Corporation, Individual

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationRecord

last_created

Class Method Details

.policy_classObject



8
9
10
# File 'app/models/dorsale/customer_vault/person.rb', line 8

def self.policy_class
  Dorsale::CustomerVault::PersonPolicy
end

Instance Method Details

#corporation?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'app/models/dorsale/customer_vault/person.rb', line 39

def corporation?
  person_type == :corporation
end


65
66
67
# File 'app/models/dorsale/customer_vault/person.rb', line 65

def destroy_links
  links.each(&:destroy!)
end

#individual?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'app/models/dorsale/customer_vault/person.rb', line 43

def individual?
  person_type == :individual
end


51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/models/dorsale/customer_vault/person.rb', line 51

def links
  a = ::Dorsale::CustomerVault::Link
    .where(alice_id: id)
    .preload(:alice => :taggings, :bob => :taggings)
    .each { |l| l.person = l.alice ; l.other_person = l.bob }

  b = ::Dorsale::CustomerVault::Link
    .where(bob_id: id)
    .preload(:alice => :taggings, :bob => :taggings)
    .each { |l| l.person = l.bob ; l.other_person = l.alice }

  return a + b
end

#person_typeObject



35
36
37
# File 'app/models/dorsale/customer_vault/person.rb', line 35

def person_type
  self.class.to_s.demodulize.downcase.to_sym
end

#tags_on(*args) ⇒ Object



47
48
49
# File 'app/models/dorsale/customer_vault/person.rb', line 47

def tags_on(*args)
  super(*args).order(:name)
end

#verify_classObject



14
15
16
17
18
19
# File 'app/models/dorsale/customer_vault/person.rb', line 14

def verify_class
  if self.class == ::Dorsale::CustomerVault::Person
    # self.abstract_class does not work with STI
    raise "Cannot directly instantiate Person class"
  end
end