Class: Dorsale::CustomerVault::Person

Inherits:
ApplicationRecord show all
Extended by:
Forwardable
Includes:
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 included from Search

included

Methods inherited from ApplicationRecord

last_created

Methods included from DefaultValuesConcern

#assign_default, #assign_default_values

Class Method Details

.policy_classObject



10
11
12
# File 'app/models/dorsale/customer_vault/person.rb', line 10

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

Instance Method Details

#corporation?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'app/models/dorsale/customer_vault/person.rb', line 41

def corporation?
  person_type == :corporation
end


67
68
69
# File 'app/models/dorsale/customer_vault/person.rb', line 67

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

#individual?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'app/models/dorsale/customer_vault/person.rb', line 45

def individual?
  person_type == :individual
end


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

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



37
38
39
# File 'app/models/dorsale/customer_vault/person.rb', line 37

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

#tags_on(*args) ⇒ Object



49
50
51
# File 'app/models/dorsale/customer_vault/person.rb', line 49

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

#verify_classObject



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

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