Firstly I''m coming from a Java EE background and building up my Rails knowledge slowly in my (relatively limited!) free time, so apologies if this is rudimentary stuff. The common pattern for user sessions seems to be something like ''session[:id] = user.id'' in the controller and ''User.find(session[:id])'' in the view. However its also possible to just set an instance variable once a user has logged in, e.g. ''@id = user.id''. Due to some rails magic the instance variable of the controller gets passed to the view, thus facilitating a kind of session persistence. I''d hazard a guess at saying this is probably bad form but due to not fully understanding how the instance variable is available I''m not sure. What''s the general consensus on this? -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 12 Jul 2011, at 22:02, ses <s.sims.mobile-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Firstly I''m coming from a Java EE background and building up my Rails > knowledge slowly in my (relatively limited!) free time, so apologies > if this is rudimentary stuff. > > The common pattern for user sessions seems to be something like > ''session[:id] = user.id'' in the controller and > ''User.find(session[:id])'' in the view. > > However its also possible to just set an instance variable once a user > has logged in, e.g. ''@id = user.id''. Due to some rails magic the > instance variable of the controller gets passed to the view, thus > facilitating a kind of session persistence. I''d hazard a guess at > saying this is probably bad form but due to not fully understanding > how the instance variable is available I''m not sure. >The passing of instance variables from controller to view is fairly central to rails. If anything, it is doing too much in the view that is frowned upon. Personally I would do something like @user = User.find session[:id] in the controller And then use @user in the view Fred> What''s the general consensus on this? > > -- > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en. >-- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Definately @user = User.find(session[:id]) would go in the controller. You can also make a helper called something like current_user so you can access the user in the view without having it to set in the controller action every time. This makes it possible to write something like: <%= current_user.name %> in the view. Google stuff on Rails helpers but I normally try to not get them bloated. Its the old saying: Fat model, skinny controller. As Fred pointed out its frowned upon to have logic in the view. Regards Stefano On Jul 13, 9:41 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 12 Jul 2011, at 22:02, ses <s.sims.mob...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Firstly I''m coming from a Java EE background and building up my Rails > > knowledge slowly in my (relatively limited!) free time, so apologies > > if this is rudimentary stuff. > > > The common pattern for user sessions seems to be something like > > ''session[:id] = user.id'' in the controller and > > ''User.find(session[:id])'' in the view. > > > However its also possible to just set an instance variable once a user > > has logged in, e.g. ''@id = user.id''. Due to some rails magic the > > instance variable of the controller gets passed to the view, thus > > facilitating a kind of session persistence. I''d hazard a guess at > > saying this is probably bad form but due to not fully understanding > > how the instance variable is available I''m not sure. > > The passing of instance variables from controller to view is fairly central to rails. If anything, it is doing too much in the view that is frowned upon. Personally I would do something like > > @user = User.find session[:id] in the controller > > And then use @user in the view > > Fred > > > > > > > > > What''s the general consensus on this? > > > -- > > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en.-- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 07/12/2011 02:02 PM, ses wrote:> Firstly I''m coming from a Java EE background and building up my Rails > knowledge slowly in my (relatively limited!) free time, so apologies > if this is rudimentary stuff. > > The common pattern for user sessions seems to be something like > ''session[:id] = user.id'' in the controller and > ''User.find(session[:id])'' in the view. > > However its also possible to just set an instance variable once a user > has logged in, e.g. ''@id = user.id''. Due to some rails magic the > instance variable of the controller gets passed to the view, thus > facilitating a kind of session persistence. I''d hazard a guess at > saying this is probably bad form but due to not fully understanding > how the instance variable is available I''m not sure. > > What''s the general consensus on this? >The real experts have already weighed in on this but I thought I would make this one comment. ROR is in most regards stateless so while an instance variable like @user is fine to communicate from controller to view you will have to use the session variables to communicate from one controller invocation to the next. Norm -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Jul 13, 4:18 pm, Norm Scherer <normsche...-ihVZJaRskl1bRRN4PJnoQQ@public.gmane.org> wrote:> On 07/12/2011 02:02 PM, ses wrote: > > > > > > > > > Firstly I''m coming from a Java EE background and building up my Rails > > knowledge slowly in my (relatively limited!) free time, so apologies > > if this is rudimentary stuff. > > > The common pattern for user sessions seems to be something like > > ''session[:id] = user.id'' in the controller and > > ''User.find(session[:id])'' in the view. > > > However its also possible to just set an instance variable once a user > > has logged in, e.g. ''@id = user.id''. Due to some rails magic the > > instance variable of the controller gets passed to the view, thus > > facilitating a kind of session persistence. I''d hazard a guess at > > saying this is probably bad form but due to not fully understanding > > how the instance variable is available I''m not sure. > > > What''s the general consensus on this? > > The real experts have already weighed in on this but I thought I would > make this one comment. > ROR is in most regards stateless so while an instance variable like > @user is fine to communicate from controller to view you will have to > use the session variables to communicate from one controller invocation > to the next. > > NormThanks for all your responses, yes I realise now that this is the case. Rails documentation seems somewhat lacking but then stuff is just so much simpler and more logical so on the whole its not a problem. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.