Problem with attr_accessor

I pass a value from controller to model with attr_accessor. before_save works fine but not after_find. What could be wrong?

This is what I use in index @test = Test.find(:all) @test.each {|a| a.key = cookies[:thekey]}

and this in create, show, edit:

@test.key = cookies[:thekey]

This is my model: attr_accessor :key

after_find :decrypt_data define_method(:after_find) { } before_save :crypt_data

private

def crypt_data       self.name = Crypto.encrypt(self.name,key) end

def decrypt_data       self.name = Crypto.decrypt(self.name,key) end

Pål Bergström wrote:

def crypt_data self.name = Crypto.encrypt(self.name,key) end

def decrypt_data self.name = Crypto.decrypt(self.name,key) end

Are you sure you don't mean @name? This is Ruby, not Python, so self would generally refer to the class or module, not the object.

-Dave

Dave Aronson wrote:

P�l Bergstr�m wrote:

def crypt_data � � �self.name = Crypto.encrypt(self.name,key) end

def decrypt_data � � �self.name = Crypto.decrypt(self.name,key) end

Are you sure you don't mean @name? This is Ruby, not Python, so self would generally refer to the class or module, not the object.

That's not true. In an instance method, self refers to the object.

-Dave

Best,

Pål Bergström wrote:

I pass a value from controller to model with attr_accessor. before_save works fine but not after_find. What could be wrong?

Note this sentence from the documentation:

"Unlike all the other callbacks, after_find and after_initialize will only be run if an explicit implementation is defined (def after_find)."

Try that.

Best,

Oops, you're right, on further research it seems to be a slippery little bugger. No wonder I usually see people using @ (or @@) instead....

-Dave

Dave Aronson wrote:

That's not true. �In an instance method, self refers to the object.

Oops, you're right, on further research it seems to be a slippery little bugger.

Not slippery at all. It's very well defined.

No wonder I usually see people using @ (or @@) instead....

That has a completely different meaning.

-Dave

Best,