Sha256: 66699b1cad437f9496749d7be3a2c7a6c5c25ba65b8126a20731023dde6f40ef

Contents?: true

Size: 1.37 KB

Versions: 7

Compression:

Stored size: 1.37 KB

Contents

class Household < ActiveRecord::Base

  attr_accessible :name, :address_attributes, :overwrite_member_addresses

  has_one :address
  has_many :individuals, :class_name => "Individual"
  belongs_to :organization

  accepts_nested_attributes_for :address, :allow_destroy => false

  validates :name, :uniqueness => true

  def lifetime_value
    individuals.sum(:lifetime_value)
  end

  def lifetime_ticket_value
    individuals.sum(:lifetime_ticket_value)
  end

  def lifetime_donations
    individuals.sum(:lifetime_donations)
  end

  def lifetime_ticket_count
    Ticket.where(:buyer_id => individuals.pluck(:id)).count
  end

  def lifetime_donations_count
    individuals.includes(:orders).map { |i| i.orders.map { |o| o.donations.count }.sum }.sum
  end

  def notes
    Note.where(:person_id => individuals.pluck(:id))
  end

  def actions
    Action.where(:person_id => individuals.pluck(:id))
  end

  def addresses
    Address.where(:person_id => individuals.pluck(:id))
  end

  def tags
    ActsAsTaggableOn::Tagging.where(:taggable_type => "Person", :taggable_id => individuals.pluck(:id))
  end

  def update_member_addresses
    return unless address.present?

    individuals.each do |individual|
      if individual.address.present?
        individual.address.update_attributes(address.values_hash)
      else
        individual.address = address.dup
      end
    end
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
artfully_ose-1.2.0 app/models/household.rb
artfully_ose-1.2.0.beta.1 app/models/household.rb
artfully_ose-1.2.0.alpha.2 app/models/household.rb
artfully_ose-1.2.0.alpha.1 app/models/household.rb
artfully_ose-1.2.0.pre.27 app/models/household.rb
artfully_ose-1.2.0.pre.26 app/models/household.rb
artfully_ose-1.2.0.pre.24 app/models/household.rb