0

アプリのモデル設定に基づいて CanCan Ability モデルを作成した Rails 4 アプリがあります。テスト中に動作する場合と動作しない場合があります。問題が何であるかわかりません。ログには、問題を示すものは何もありません。とにかくそんなにきれいだとは思いません。この能力モデルを改善する方法について何か提案はありますか? 非常に冗長で紛らわしいようです。

if user
      ##
      can :manage, User do |u|
        case u.account
          ## If user is a Developer allow it to only be managed by itself (user)
          when Developer
            u == user
          ## If user is a Organization allow it to only be managed by it's founders
          when Organization
            u.account.founders.exists?(user)
          else
            false
        end
      end

      can :manage, App do |a|
        case a.appable
          ## If app belongs to a Developer allow it to only be managed by it owner (developer)
          when Developer
            a.appable.id == user.id
          ## If app belongs to a Organization allow it to only be managed by its organizations' founders
          when Organization
            a.appable.founders.exists?(user)
          else
            false
        end
      end
      ##
    end
4

1 に答える 1

0

クリーンアップに関しては、代わりにユーザーの役割ごとにロジックを整理することを検討できます。このようにして、特定の役割を簡単に見て、アクセスできる能力とできない能力をすべて理解できます。

このようなもの:

if user.developer?
  can :manage User, id: user.id
  can :manage App, App.appable_by(user) 
end

App.appable_by(user)注:ルールをテストするために、次のようなカスタム ファインダーを作成する必要がある場合があります。

あなたが組織/創設者に対して何をしようとしているのか、私は完全には理解していません。これがuser.founderのような役割なら? 次に、上記のように扱いますが、別の承認規則を使用します。

于 2013-08-28T04:38:40.083 に答える