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.