Class: Address

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/address.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_or_create(pers_id) ⇒ Object



32
33
34
35
# File 'app/models/address.rb', line 32

def self.find_or_create(pers_id)
  #refactor to first_or_initialize when Rails 3.2
  where(:person_id => pers_id).first || Address.create(:person_id => pers_id)
end

.from_payment(payment) ⇒ Object



24
25
26
# File 'app/models/address.rb', line 24

def self.from_payment(payment)
  payment.try(:customer).try(:address)
end

.unhash(address) ⇒ Object



28
29
30
# File 'app/models/address.rb', line 28

def self.unhash(address)
  (address.is_a? Hash) ? Address.new(address)  : address
end

Instance Method Details

#addressObject



7
8
9
# File 'app/models/address.rb', line 7

def address
  "#{address1} #{address2}"
end

#is_same_as(addr) ⇒ Object



15
16
17
18
19
20
21
22
# File 'app/models/address.rb', line 15

def is_same_as(addr)
  return address1.eql?(addr.address1) &&
         address2.eql?(addr.address2) &&
         city.eql?(addr.city) &&
         state.eql?(addr.state) &&
         zip.eql?(addr.zip) &&
         country.eql?(addr.country)
end

#to_sObject



11
12
13
# File 'app/models/address.rb', line 11

def to_s
  "#{address1} #{address2} #{city} #{state} #{zip} #{country}"
end

#update_with_note(person, user, address, time_zone, updated_by) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/models/address.rb', line 37

def update_with_note(person, user, address, time_zone, updated_by)
  old_addr = to_s()

  unless is_same_as(address)
    ["address1", "address2", "city", "state", "zip", "country"].each do |field|
      self.send("#{field}=", address.send(field))
    end
    
    if save 
      extra = updated_by.nil? ? "" : " from #{updated_by}"
      text = "address updated#{extra}"
      text = text + ", old address was: (#{old_addr})" unless old_addr.blank?
      note = person.notes.create({
        :occurred_at  => DateTime.now.in_time_zone(time_zone),
        :text         => text 
      })
      note.user = user
    else
      return false
    end      
  end

  true
end