Forum: Ruby on Rails Using session-type data in an ActiveRecord callback...

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3da4ed7ea16825fead6120d70dc7da43?d=identicon&s=25 JSeidel (Guest)
on 2007-05-06 02:47
(Received via mailing list)
Any suggestions on how best to gain access to session-type information
while in an ActiveRecord callback, such as after_save?

I am encrypting some information in the database, using the
generalized encryption/decryption handler in "Agile Web Development
With Rails" (p 375ff).  I got it working, and now I want to reference
a session field (a user PIN) which is NOT stored in the database...
for security reasons.

I can't seem to gain access to the session method:

1. attempting to use session['user']['pin'] gives me an "undefined
variable or method"
2. attempting to use UserController.session['user']['pin'] gives me a
message saying that it's expecting an integer, not a string.

Any ideas as to how to either (1) gain access to the session hash or
(2) provide my own application-wide storage mechanism?

Thanks...jon
1de2e094b9d6cebf76a0925c853a19f8?d=identicon&s=25 unknown (Guest)
on 2007-05-06 04:23
(Received via mailing list)
I wouldn't do it this way since it kind of muddy's up the controller &
model portions of the MVC.

Instead you should create an function that will set the PIN in the
user model like this.
attr_accessor :pin

Then in your controller just pass it to a user object

user = User.find_by_id(session[:user][:id])
user.pin = session[:user][:pin]
user.save!


in the Model

after_save
     # do whatever with the pin
      user.pin # this will call it now that you have set it
end

That's the basic gist of it, I haven't tested any of this could but I
hope its clear enough to understand.

hope that helps,
Jim
1de2e094b9d6cebf76a0925c853a19f8?d=identicon&s=25 unknown (Guest)
on 2007-05-06 04:25
(Received via mailing list)
oops I meant instead of this

> after_save
>      # do whatever with the pin
>       user.pin # this will call it now that you have set it
> end


do this

after_save
       self.pin #to call the current user instances pin.
end
3da4ed7ea16825fead6120d70dc7da43?d=identicon&s=25 JSeidel (Guest)
on 2007-05-06 06:54
(Received via mailing list)
Very cool, Jim... thank you very much... just the kind of guidance I
was looking for. I'll give it a shot tomorrow.

...jon
This topic is locked and can not be replied to.