1

Ruby 1.9 を使用して RoR 3.1 で Web サイトを開発しています。次のようなユーザーの役割の構成ファイル (RAILS_ROOT/config/roles.rb) を作成したいと思います。

auth do
    roles :admin do
        auth_on :blogs, :to => [:create, update, :destroy]
        auth_on :comments, :to => [:create, update, :destroy]
    end

    roles :moderator do
        auth_on :blogs, :to => [update]
        auth_on :comments, :to => [:create, update] do
            where_attribute :user => current_user
        end
    end
end

アイデアは、ファイルを解析し、役割の変数を設定することです。この種のヘルパーを実装する方法と、ファイルをブロックごとに解析する方法を知っていますか? 簡単な構成ファイルを作成する別のアイデアがある場合は、教えてください!

4

2 に答える 2

1

CanCan gem を再作成しようとしているようです。

https://github.com/ryanb/cancan

cancan を使用して、ability.rb権限を指定するファイルを作成します。次に例を示します。

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
      can :manage, :all
    else
      can :read, :all
    end
  end
end

次に、ビュー (またはコントローラー) で次のようにアクセスを許可します。

<% if can? :update, @article %>
  <%= link_to "Edit", edit_article_path(@article) %>
<% end %>

したがって、独自のものを構築するのではなく、最初にこれがニーズを満たすかどうかを確認することをお勧めします. そうでない場合は、アイデアを進める方法について少なくともいくつかのアイデアを得ることができます。また、cancan は devise とうまく連携して、全体的な認証/承認戦略を提供します。

于 2012-05-10T02:47:17.913 に答える
1

なぜ YAML を使用しないのですか? 何かのようなもの

ロール.yml:

roles:
  admin:
    blogs:
      create:
      update:
      destroy:
    comments:
      create:
      update:

そして、次のようなもの

require 'yaml'
roles = YAML::load(File.open("roles.yml"))['roles']
roles.each do |user, role|
  role.each do |part,privs|
    privs.keys.each do |priv|
      setPrivilegeFor(user, part, priv)
    end 
  end
end
于 2012-05-09T23:26:16.183 に答える