問題タブ [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 投票する
0 に答える
237 参照

ruby-on-rails - スペック内の CanCan / CanCanCan を使用した間違ったクエリ

CanCan (過去と現在の CanCanCan) がテストのクエリに奇妙な SQL コードを追加するという問題があります。

私のモデル:

そして、私は CanCanCan 能力を持っています:

コードスニペットを実行すると:

開発/生産では、次のものを持っています:

仕様:

その他のアビリティは良好に機能します(マシンに属するモデルを除く)。

たぶん、他の情報を追加する必要があります-お願いします.

UPD: :index を #accessible_by に追加しても役に立ちません:

CanCanCan v1.10.1

0 投票する
2 に答える
4048 参照

ruby-on-rails - cancan load を変更し、別の ID を使用してリソースをロードするようにリソースを承認する方法

ロードを変更し、別の ID を使用してリソースをロードするようにリソースを承認するにはどうすればよいですか。例のために。

私のルートは

私のイベントコントローラーでは、使用してイベントにアクセスし:event_id、使用してユーザーにアクセスしています:id

イベントコントローラーで、イベントをロードする代わりにload_and_authorize_resource使用を変更するにはどうすればよいですか:event_id:id

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

ruby-on-rails - Rails CanCan(Can) 複合認証

私は次のモデルを持っています:

linked_reviewReview モデルでの関連付けを除いて、すべてがかなり自明だと思います。任意の 2 つのレビューは相互にリンクすることができ、本質的にデュアル レビューと呼ばれるものを作成します。

私の CanCan 能力クラスでは、次のルールから始めました。

これらは期待どおりに機能しますが、ユーザーがリンクされたレビューを介して間接的にアクセスできるビデオへの読み取りアクセスを許可する方法がわかりません。

つまり、ユーザー a がビデオ #2 (非公開、ユーザー b によって共有および所有されていない) へのアクセスを要求し、ビデオ #2 がビデオ #1 に関連付けられている場合 (ユーザー a は公開されているため、ユーザー a と共有されているためアクセス可能)または彼が所有している) リンクされたレビューを介して、要求しているユーザーに読み取りアクセスを許可する必要があります。

どうすればこれを行うことができるかについてのアイデアはありますか? CanCan は index アクションのブロックを無視するため、ブロックは機能しませんVideo.accessible_by(current_ability)。私はビデオモデルのある種の範囲を理解しようとしましたが、これをどのように行うかについて頭を悩ませているようには見えません.

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

ruby-on-rails - belongs_to アソシエーションをスコープとするクラスにアクセス許可を付与できません

多くの s とsを持つCourseClassモデルがあります。course_class インスタンスの教師が、その course_class の出席シートを管理できるようにしたいと考えています。AttendanceSheethas_many Teacher

私はそれを設定するために次のことを期待しています:

ユーザーはグローバル ロールを持ちますが、CourseClass でインスタンスごとのロールを持つこともできます。上記は、理論的には、彼らがグローバル ロールを持っていることを確認する必要があり、teachers関連付けは、その CourseClass でインスタンス ロールを持つ教師のみを見つけます。

コントローラーで @attendance_sheets は次のように設定されます。

@attendance_sheets = @course_class.attendance_sheets.all

能力チェックを実行すると、次の結果が得られます。

私は / したいread/ manageonであり、onまたはAttendanceSheetbe であると予想しました。false:read@attendance_sheets@course_class.attendance_sheetstrue

事前に助けてくれてありがとう。

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

ruby-on-rails - Rails と CanCanCan を使用した承認とグループ

メンバーシップモデルを介して、多対多の関連付けを持つユーザーと組織モデルがあります。ユーザー (役割はありません) は、メンバーとして所属する組織の作成、読み取り、および更新のみを行う必要があります。

CanCanCan の Ability クラスから次のものを入れて load_and_authorize_resource、Organization モデルを作成しました。

/organizations (インデックス ページ) を読み込む@organizationsと、nil です。

設定する@organizations = Article.accessible_by(current_ability)と、次のエラーが発生します。

accessible_by 呼び出しは、ブロック 'can' 定義では使用できません。:index Organization(id:integer... の SQL を判別できません。

ドキュメントには SQL の使用に関するアドバイスが記載されていますが、その方法がよくわかりません。