0

Cancan と Best_In_Place の両方を使用している場合、「教師」はモデルの特定の属性 (モデル「本」など) のみを更新し、そのモデルの他の属性は更新できないと言えます。Cancan は 2.0 でまだ開発中であるため、属性承認はまだサポートされていないことを理解しています。最初に考えたのは、次のようなものを使用することでした。

cannot :all, Book
if is_teacher?
    can :update_certain_attribute, Book
end

しかし、私は Best_In_Place を使用したかったので、私の予備調査によると、次のような Best_In_Place 更新の属性しか使用できないことがわかりました。

<%= best_in_place @book, :certain_attribute, :type => :input %>

メソッドではなく:

<%= best_in_place @book, :update_certain_attribute, :type => :input %>

これに対処する最善の方法は何ですか?ありがとう :)

4

1 に答える 1

0

2つのことについて話しているように更新されました

これにより、変数が属性にアクセスできるようになるため、変数が best_in_place を使用して更新される場合、モデル/コントローラーは変数が実際に更新されることを許可しません

これについては、アクセス可能な動的属性を確認する必要があると思います。ライアンはこれについて素晴らしいキャストをしていますhttp://railscasts.com/episodes/237-dynamic-attr-accessible

best_in_place で cancan を使用して条件を設定するには、次のコードを使用できます

繰り返しますが、これは特定の属性には役立ちませんが、動的属性にアクセス可能であることと組み合わせて、変数が変更されないようにします

于 2014-01-14T05:37:15.583 に答える