0

私のアプリには管理インターフェイスしかなく、AdminUser モデルを使用しています。管理者ユーザーは、さまざまな役割を持つことができます。

管理者の役割に基づいてリソースの取得を変更したいと考えています。ActiveAdmin登録ブロックに追加しました:

#app/admin/payments.rb
scope_to :current_admin_user

そして、私は次のようなものを書くことができると思います:

#app/models/admin_user.rb
def payments
  case self.role
  when role == 'manager'
    Payments.where('...')
  when role == '...'
  end
end

しかし、これは機能せず、常にすべてのリソースが表示されます。

どうすればこの仕事を手に入れることができますか?

4

2 に答える 2

0

その時、私はより良い解決策を見つけました。

承認アダプターは問題なく機能し、スコープは必要ありません。たとえば、CanCan の場合:

class Ability
include CanCan::Ability

  def initialize(user)

    #read/manage actions
    if user.role == 'manager'
      can :manage, Payment, :accessible_by_manager => true

    elsif user.role == 'accountant'
      can :read, Payment, :accessible_by_accountant => true
    else
      #can read all
      can :read, Payment
    end    
  end

end
于 2013-06-09T21:03:16.767 に答える