問題タブ [cancancan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
315 参照

ruby-on-rails-4 - R: cancancan 特定のユーザー タイプのインデックス ページを非表示にする

Ruby on railsでcancancan gem と継承されたテーブルに問題が発生しました。Teacher < Account私のアカウント モデルには、さまざまな機能を持つ複数の継承モデルがDirector < Accountあります。

これが私のルールです:「inability.rb」

私のルートファイルは次のようになります:

教師としてログインし、/directors (インデックス ページ) に移動すると、Cancan は、ディレクター ページを表示する代わりに Unauthorized::AccessDenied メッセージを生成する必要があります。

私はおそらくドキュメントで何かを逃しました。誰かが私を啓発できますか?

ありがとう

0 投票する
1 に答える
1537 参照

ruby-on-rails - CanCan(カン)で工夫する

これに関する適切なチュートリアルが見つからないようで、少し壁にぶつかりました。

基本的な CRUD アプリで Rails 4.2.0 を使用しています。認証にはdeviseを使用し、ロールにはCancancanを使用しています。これらにはかなり理解しやすいドキュメントがあるためです。

2 種類のユーザーがいます。

ユーザーと管理者。

管理者はすべてのモデルと対話できます。追加・編集・削除など

ユーザーは特定のモデルとのみ対話できます。これは一種の予約システムになります。

これを設定するために必要なプロセスがよくわかりません。ユーザータイプごとに完全な Rails 生成を行う必要がありますか? それとも Devise 生成だけを使用できますか? それに加えて、ユーザーの種類を選択するにはどうすればよいですか? これまでのところ、機能する 2 つのログイン リンクがあります。

私が抱えている主な問題は、カンカンカンで役割を定義することです。

この件に関するヘルプ/質問は大歓迎です。

0 投票する
1 に答える
877 参照

ruby-on-rails - RSpec と Cancancan: すべてのネガティブ テストが失敗する

なぜ私のネガティブ(つまり、should_not)テストだけが失敗するのかを理解するのを手伝ってくれる人はいますか? すべてのshouldテストに合格しているので、構成が間違っていると思いますが、何がわかりません。

アビリティ.rb

user_spec.rb

すべての否定的なテストには、次の結果があります。

ご協力いただきありがとうございます。

0 投票する
1 に答える
432 参照

ruby-on-rails - バニティ URL と CanCanCan gem の使用 (load_and_authorize_resource エラー)

ID の代わりにユーザー名が表示されるように、Rails アプリでバニティ URL を使用しようとしています。ユーザー名がIDの代わりにURLで使用されるようにスラッグを作成しました(ここではすべて正常に機能します)。コントローラーでload_and_authorize_resourceが有効になっているページをロードしようとすると、直面している問題が発生します。これは、「ID = X のユーザーが見つかりませんでした」というエラーを引き起こしているスラッグではなく、ID を介してユーザーを見つけようとしていると思います。ID ではなくスラッグを使用するように load_and_authorize_resource をオーバーライドできる場所はありますか?

0 投票する
1 に答える
112 参照

ruby-on-rails - CanCan: 依存関係を含むレコードのアクセス許可を確認する

モデル例

  • ユーザーは 0..* カープールにいます
  • 各車は 1 つのカープールにあります
  • 各車のピックアップには1台の車があります

権限設定

使用事例

目標は、ユーザーが自分の車の 1 つに新しい CarPickup を作成できるようにすることです。ビューは次のようになります。

質問

ユーザーを保存するときは、現在のユーザーが上記のフォームで渡された車にアクセスできることを確認する必要があります。次の行に沿って何かを行うエレガントな方法はありますか:

解決策の試み / さらなる質問

  • 次のように能力を適応させます。

    製品を選択せず​​にフォームを保存すると、これが壊れます。この解決策では、nil でないかどうかを指定する方法が必要です。

  • 2 番目の承認呼び出し:

    /li>
  • 単一のレコードcan?(:read, @car_pickup)として理解できますか?accessible_by

  • これはおそらく load_resource を使用して達成できますか?

0 投票する
0 に答える
165 参照

ruby-on-rails - params[:id] が設定されていない cancancan 認証

「場所」を承認しようとしています。URL のパラメーターはロケーション ID ではなく、「url_alias」と呼ばれる別のフィールドです。したがって、LocationsController で適切な場所を検索する場合、params[:id] は使用しません。

ルートは次のようになります。

ability.rb モデルでは、次の行を使用します。

ここでの問題は、CanCanCan が url_alias フィールドで承認しようとした情報を使用しないことです。必要なすべての場所を表示できます。「url_alias」を「qwert」などのランダムな値に置き換えると、フィールドが存在しないというエラーも発生しません。

コントローラーで params[:id] をランダムな値に設定することで、すべてが再び期待どおりに機能し、cancancan が url_alias などによって承認されます。単に params[:id] をCanCanCan を機能させるためのランダムな値。それで、誰かがより良い解決策のアイデアを持っていますか? 前もって感謝します!