Sha256: 434c68cc6fb7dae1f0d32736b2e96278207593e6cfb2e5cedeb8441b7b2afb29
Contents?: true
Size: 1.85 KB
Versions: 2
Compression:
Stored size: 1.85 KB
Contents
class Dorsale::CustomerVault::Person < ::Dorsale::ApplicationRecord self.table_name = "dorsale_customer_vault_people" extend Forwardable include ::Agilibox::Search include ::Dorsale::Users::Avatar def self.policy_class Dorsale::CustomerVault::PersonPolicy end after_initialize :verify_class 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 acts_as_taggable has_many :comments, -> { order(created_at: :desc, id: :desc) }, class_name: ::Dorsale::Comment, as: :commentable, dependent: :destroy has_one :address, class_name: ::Dorsale::Address, as: :addressable, inverse_of: :addressable, dependent: :destroy has_many :tasks, class_name: ::Dorsale::Flyboy::Task, as: :taskable, dependent: :destroy has_many :invoices, class_name: ::Dorsale::BillingMachine::Invoice, as: :customer accepts_nested_attributes_for :address, allow_destroy: true after_destroy :destroy_links default_scope -> { order("LOWER(COALESCE(corporation_name, '') || COALESCE(last_name, '') || COALESCE(first_name, '')) ASC") } def person_type self.class.to_s.demodulize.downcase.to_sym end def corporation? person_type == :corporation end def individual? person_type == :individual end def tags_on(*args) super(*args).order(:name) end 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 def destroy_links links.each(&:destroy!) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dorsale-3.5.1 | app/models/dorsale/customer_vault/person.rb |
dorsale-3.5.0 | app/models/dorsale/customer_vault/person.rb |