Question

Say I have 4 roles: user, agent, admin, superadmin.

Where each role has subsequently more permissions on all objects in my app.

I am using Rolify, CanCan & Devise.

What I would like to do is, whenever I want to enable something - say:

<%= link_to "Create New User", new_user_registration_path if current_user.has_role? :superadmin %>

I would like for that link to show if the person is either an admin or a superadmin. I know I could simply just do an || - but that doesn't seem very DRY, especially since I will have to do current_user.has_role? :superadmin || current_user.has_role? :admin.

Imagine there are some links/assets that I want agent, admin & superadmin to have access to.

How do I do this in a DRY way?

Was it helpful?

Solution

Why do u check roles instead of checking a permissions? As I know cancan support can? and cannot? methods which can help in your situation. You should write something like this

<%= link_to "Create New User", new_user_registration_path if can?(:create, User) %>

Usefull link about this feature

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top