0

次のことを実装するgemが存在します:

  • ユーザーは多くの役割を持つことができます
  • 各ロールには権限のグループがあります
  • 各許可は単なるブール値です
  • データベースに保存されている役割と権限 (最も重要)

たとえば、次のようなものが必要です。

if current_user.can?(:read_all, :list_of_orders)
...
end

can?メソッドは検索する必要があり、ロールのいずれかがそれを許可しますか?

4

3 に答える 3

1

ユーザー認証のデバイスを参照してください。そこでロールを定義できます。

https://github.com/plataformatec/devise

さらに良いことに、cancan と簡単に組み合わせることができます。

https://github.com/ryanb/cancan/wiki/Role-Based-Authorization
于 2013-03-16T15:39:40.133 に答える
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
于 2013-03-16T15:43:53.530 に答える
1

Zippie の質問に続いて、CanCan を使用することをお勧めしますが、認証に使用することもできます。Rails 3 Authentication and Authorization with Devise and CanCan (Part 1) & 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?コントローラーで を使用して、必要なフィルターを作成することもできます。

于 2013-03-16T15:44:19.407 に答える