0

これが私のデータベースのレイアウト方法です。

User (one) => many Computers (one) => many Accounts

コンピューターの所有者だけがアカウントを編集できるようにCanCanを設定しようとしています。これは私がこれまでに持っているものです。

user ||= User.new 
if user.admin?
    can :manage, :all
else
    can :manage, Computer, :user_id => user.id # <= works
    can :manage, Account, :computer => {:user_id => user.id} # <= doesnt work
end

2番目の缶は機能しません。ユーザーが自分のすべてのコンピューターに関連付けられているすべてのアカウントを編集できるようにしたいと思います。これが機能しない理由について何かアイデアはありますか?ガイドが言う方法のいくつかを実装しようとしましたが、それらも機能していません。

4

1 に答える 1

0

私も同様の状況にあり、それを次のように機能させることができました。

can :manage, Account, computer_id: user.computers.collect(&:id)

したがって、基本的に、ユーザーはcomputer_idsがユーザーに関連付けられているアカウントを管理できます。

于 2013-01-31T03:03:22.087 に答える