是否存在gem,它实现了以下内容:
例如,我想要这样的东西:
if current_user.can?(:read_all, :list_of_orders)
...
end
can?
方法应该搜索,任何角色都可以搜索。
答案 0 :(得分:1)
请参阅设计用户身份验证,您可以在那里定义您的角色:
https://github.com/plataformatec/devise
甚至更好,将它与cancan轻松结合:
https://github.com/ryanb/cancan/wiki/Role-Based-Authorization
答案 1 :(得分:1)
你可以尝试cancan gem,它很强大
https://github.com/ryanb/cancan
例如:
<% if can? :update, @article %>
<%= link_to "Edit", edit_article_path(@article) %>
<% end %>
你可以在ability.rb
can :manage, Article # user can perform any action on the article
can :read, :all # user can read any object
can :manage, :all # user can perform any action on any object
答案 2 :(得分:1)
根据Zippie的问题,我建议您使用CanCan,但您也可以使用它进行身份验证。请参阅以下有用的链接Rails 3 Authentication and Authorization with Devise and CanCan (Part 1)&amp; Rails 3 Authentication and Authorization with Devise and CanCan (Part 2)
您可能在ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
# raise user.role?(:administrator).inspect
if user.role? :administrator
can :manage, :all
can :manage, User
elsif user.role? :employee
can :read, :all
end
end
end
因此,在您的观看中,您可以执行类似
的操作您也可以使用控制器中的can?
创建必要的过滤器。