Would really appreciate it if someone could tell me why this is happening:

I override ssn method of AR class so I can encrypt/decrypt to/from the db:

class Person < ActiveRecord::Base
  def ssn=(value)
    write_attribute(:borrower_ssn, Crypto.encrypt(self.encryption_key,
value))
    write_attribute(:borrower_ssn_final_four, value[5,4])
  end

  def ssn
    # this begin - rescue can be removed once all data is encrypted
    begin
      return Crypto.decrypt(self.encryption_key,
read_attribute(:borrower_ssn)) if read_attribute(:borrower_ssn) &&
self.encryption_key
    rescue
      return read_attribute(:borrower_ssn) if read_attribute(:borrower_ssn)
&& self.encryption_key
    end
    nil
  end
end

However, when I do Person.find(27) I get:

#<Person id: 27, ssn: "l+IV+c55qywTjPd+bW+IGA==\n" >

And then if I do p = Person.find(27), then I get the decrypted ssn.

I know that find must be processing under the override methods, but I dont
understand why, as I thought if you overrode a method it would hold in all
situations for the AR object.

David

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to