Global Method Declaration?

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

On 3/30/06, Brent J. [email protected] 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

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 D.

http://blog.atomgiant.com
http://gifthat.com

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

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