ruby on rails - Helper methods in Controller -


i have helper module:

module sessionshelper   @current_user   @current_session    def current_user     @current_user = user.find(cookies[:user_id]) if(cookies[:user_id])   end    def current_session     @current_session = session.find_by_secret_key(cookies[:session_secret_key])   end    def current_user=(user)     @current_user = user   end    def current_session=(session)     @current_session = session   end end 

and controller:

class sessionscontroller < applicationcontroller   include sessionshelper   respond_to :json    def create     u = user.find_by_ip(request.remote_ip)     u = user.create({:ip => request.remote_ip}) unless u      s = session.create     s.admin = u     s.save!      send(:current_user=,u)     send(:current_session=,s)      respond_with s   end end 

notice how have set current user :send method, because calling current_user=u directly in controller not it.

calling current_user directly expected work, need use self explicit receiver

def create   u = user.find_by_ip(request.remote_ip)   u = user.create({:ip => request.remote_ip}) unless u    s = session.create   s.admin = u   s.save!    self.current_user = u   self.current_session = s    respond_with s end 

otherwise, following code set local method variable

def create   u = user.find_by_ip(request.remote_ip)   u = user.create({:ip => request.remote_ip}) unless u    s = session.create   s.admin = u   s.save!    current_user = u   current_session = s    respond_with s end 

as side note, may want use meaningful variable names.

def create   user = user.find_by_ip(request.remote_ip) || user.create(:ip => request.remote_ip)    session = session.create   session.admin = user   session.save!    self.current_user = user   self.current_session = session    respond_with session end 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -