2011-10-24 10 views
4

動作していません。 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が機能しないのか私は説明を見たいと思う。

+0

authorize_resourceを交換し、あなたは終了しました適切な解決策を見つけ出す – twe4ked

+1

残念ながら、解決策は見つかりませんでした。プロジェクトは放棄されました。私が取り組んできた将来のプロジェクトでは、この問題にぶつかりませんでした。 – Viet

答えて

0

ちょうどそのようなあなたのコントローラで

load_resource_authorize_resource 

を呼び出している、またはあなたが承認するモデルを含めていますか?

は私が入力した場合、私はあなたの問題を複製し得ることを発見しのようなもの:私はとは対照的に、その理由は、後者は、あなたが任意に「デッキ」を認可するためにカンカンを求めているので、動作しないと思います

load_resource_authorize_resource Deck 

あなたが本当にやりたいことであるコントローラーアクションを許可します。

0

本サーバーを再起動しますか?あなたのコードは私には良く見えます。

+0

私は信じていますが、私はサーバーを卑猥な時間に再起動しなければならないと信じています:(私はこれが解決策であることを望みますが、そうではありません。 – Viet

1

たぶん、あなたは、このトピックを見ることができます: Cancan condition

私はあなたと同じ問題を抱えている、と私はそのトピックで、それを解決するため、 私は同じ問題を持つload_and_authorize_resource

関連する問題