Sha256: 1b5ffa01cead2c36abdedf1aec7d901b8bcb316e92a3acce127cc6a353069685
Contents?: true
Size: 1.87 KB
Versions: 2
Compression:
Stored size: 1.87 KB
Contents
require "dorsale/search" class Dorsale::CustomerVault::Person < ::Dorsale::ApplicationRecord self.table_name = "dorsale_customer_vault_people" extend Forwardable include ::Dorsale::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.3.0 | app/models/dorsale/customer_vault/person.rb |
dorsale-3.2.0 | app/models/dorsale/customer_vault/person.rb |