Is there a place where I can put a method that can be accessed in both views and controllers? Here''s the situation, maybe someone can suggest a better way to go about this: I created my own custom login system with email verification and user roles (basically, I tinkered around with SaltedHashLoginGenerator until I finally gave up and wrote my own). One role, of course, is an admin role. Users with this designation can add headline articles, new employee bios, etc. All methods in a controller may or may not need the admin role so I cant use a before_filter in all of them. So I created an is_admin method and put it in the application controller. Works great. Problem is, there are times when I need to do an is_admin check inside a view. So where can I place is_admin so both the view and controller can call it? Is there a better way of doing this? Thanks, - Brent
Since session variables are visible in the view, why not set one: session[:is_admin] One of your before filters or your login routine could set this the first time, then you can access it from both places. This would also simplify your is_admin before filter: def is_admin session[:is_admin] end Cheers, Sean Cribbs Web Services - KCKCC>>> bljohnson@gmail.com 3/30/2006 10:03 AM >>>Is there a place where I can put a method that can be accessed in both views and controllers? Here''s the situation, maybe someone can suggest a better way to go about this: I created my own custom login system with email verification and user roles (basically, I tinkered around with SaltedHashLoginGenerator until I finally gave up and wrote my own). One role, of course, is an admin role. Users with this designation can add headline articles, new employee bios, etc. All methods in a controller may or may not need the admin role so I cant use a before_filter in all of them. So I created an is_admin method and put it in the application controller. Works great. Problem is, there are times when I need to do an is_admin check inside a view. So where can I place is_admin so both the view and controller can call it? Is there a better way of doing this? Thanks, - Brent _______________________________________________ Rails mailing list Rails@lists.rubyonrails.org http://lists.rubyonrails.org/mailman/listinfo/rails -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060330/8a71471c/attachment.html
On 3/30/06, Brent Johnson <bljohnson@gmail.com> wrote:> All methods in a controller may or may not need the admin role so I > cant use a before_filter in all of them.I know this doesn''t answer your original question, but did you realize that you could do this? before_filter :is_admin, :only => [ :edit, :delete ] -- OR -- before_filter :is_admin, :except => [ :show, :list ] -- James
It does solve the problem, and is a much more elegant solution than dealing with it in the view! Thanks for the info. - Brent On 3/30/06, James Ludlow <jamesludlow@gmail.com> wrote:> On 3/30/06, Brent Johnson <bljohnson@gmail.com> wrote: > > All methods in a controller may or may not need the admin role so I > > cant use a before_filter in all of them. > > I know this doesn''t answer your original question, but did you realize > that you could do this? > > before_filter :is_admin, :only => [ :edit, :delete ] > > -- OR -- > > before_filter :is_admin, :except => [ :show, :list ] > > > -- James > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >
Hi Brent, The before filter is the way to go for this scenario. However, if you find that some views are shared by both members and you only want to show admin links to admins, you will still need to access the is_admin method in your views. The good news is it is very simple to do. From within your application controller just add: helper_method :is_admin And it will be available to both. -- Tom Davies http://blog.atomgiant.com http://gifthat.com
Awesome thanks. This is definitely true, some of the views are shared by registered, unregistered and admin users. The difference is that the admin user gets to see links like "edit" or "delete" that the normal user does not. - Brent On 3/30/06, Tom Davies <atomgiant@gmail.com> wrote:> Hi Brent, > > The before filter is the way to go for this scenario. However, if you > find that some views are shared by both members and you only want to > show admin links to admins, you will still need to access the is_admin > method in your views. The good news is it is very simple to do. From > within your application controller just add: > > helper_method :is_admin > > And it will be available to both. > > > -- Tom Davies > > http://blog.atomgiant.com > http://gifthat.com > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >
dear friend, I have installed radRails V0.6.1 When i tried to press ctrl+backspace in editor ,the error come up "Ruby Content Assist did not complete normaly.please see the log for moreinformation." what sould i do to solve this error ? thanks __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com