Rubyの新機能で、社内アプリケーションの変更に取り組んでいます。CanCanを入れ子にした子要素
CanCanを使用して、ページへのアクセスを制限することができます。
私は以下のコードを使用していますが、未知の量の子要素に対してこれを書くことができるより良い方法があることはわかっています。
ユーザには、ラインマネージャがあります。ラインマネージャは、e.t.cです。私はトップレベルのマネージャーがスタッフのアカウントを見ることができるようにツリー階層を達成しようとしていますが、スタッフの階層の一部である場合に限ります。以下の例では、JaneとJackのプロファイルは表示できますが、JoshやJamesのプロファイルは表示できません。これは、巣の量を拡大することができるよう、長期的な解決策ではなく、単にユーザーよりも上で行うことが必要とAbility.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :read, User, id: user.id
can :read, User, line_manager: user
can :read, User, line_manager: {line_manager: user}
can :read, User, line_manager: {line_manager: {line_manager: user}}
can :read, User, line_manager: {line_manager: {line_manager: {line_manager: user}}}
can :read, User, line_manager: {line_manager: {line_manager: {line_manager: {line_manager: user}}}}
can :read, User, line_manager: {line_manager: {line_manager: {line_manager: {line_manager: {line_manager: user}}}}}
の
+-------------+----------------------+--------+
| user_id | name | parent |
+-------------+----------------------+--------+
| 1 | JOHN SMITH | NULL |
| 2 | JANE SMITH | 1 |
| 3 | JACK SMITH | 2 |
| 4 | JOSH SMITH | 5 |
| 5 | JAMES SMITH | NULL |
+-------------+----------------------+--------+
パートは私がどのような援助に感謝します。
のようなあなたのカンカンの能力にブロックを渡すことができます? – Gaston