動作していません。 CardテーブルとDeckテーブルの両方に、ブールオプション付きの表示可能な列があります。現在、テーブル内のすべてのオブジェクトは:visible => false
です。したがって、私は登録された役割を持つユーザーがオブジェクトのいずれかを:review
にできないことを期待していますが、そうではありません。コントローラレベルの制限はうまくいきます(編集や削除はアクセスできません)、条件のハッシュを使用してリソースの表示を制限するようには見えません。何かご意見は?Railsのカンカンハッシュは、私はシンプルなAbility.rbは、以下のとおり設定している
編集:私はauthorize_resource
を2つのコントローラに持っています。 Ruby 1.9.2、Rails 3.1、CanCan 1.6.7を使用しています。私は認証のためにdevise 1.4.9を使用しています。 MySQLはデータベースです。
編集: 私は条件に基づいてリソースを制限する方法を考え出しました。すべてのコントローラでauthorize_resourceを持っていても(メソッドへのアクセスを制限するために働いていました)、リソースを制限したいメソッドにauthorize!
を追加する必要がありました。例えば、:visible => true
の状態でデッキのためのshowアクションを制限するために、私は次のようなauthorize!
を追加しました:私は表示されませんので、
def show
@deck = Deck.find(params[:deck_id]
authorize! :review, @deck
end
正直に言うと、私は、このソリューションに満足していないですなぜauthorize_resource
が機能しないのか私は説明を見たいと思う。
で
authorize_resource
を交換し、あなたは終了しました適切な解決策を見つけ出す – twe4ked残念ながら、解決策は見つかりませんでした。プロジェクトは放棄されました。私が取り組んできた将来のプロジェクトでは、この問題にぶつかりませんでした。 – Viet