問題タブ [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 に答える
56 参照

ruby-on-rails - Rails 4 - CanCanCan - 式

CanCanCan を使用して、ability.rb で能力を定義しようとしています。

これが有効な表現かどうかはわかりません - これを扱っている例が wiki にありません。

Visionというモデルがあります。Vision には、:public というブール属性と、:public_vision という別の属性があります。

:public が true の場合、:public ビジョンを読み取る機能を作成したい

私はこれを試しました:

これは有効な構文ですか? コメントアウトできないルビのビットが多すぎるため、自分の能力ファイルをまだテストできません。

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

ruby-on-rails - Rails 4 & CanCanCan - 構文

Rails 4 アプリで CanCanCan を使用して機能を定義しようとしています。

私はこの能力を私の能力.rbファイルに持っています:

Time.now の後のコンマを削除しようとすると、次のエラーが発生します。

これらのエラー メッセージが何を意味し、何をしたいのかを解読する方法がわかりません。最初の形式では、コンマを => に置き換えることが正しい理由がわかりません。なぜなら、そのエラーに対して評価する必要がある 2 つの別個の属性があるからです。

2番目のエラーについては、クラスに入る必要がある他の能力の長いリストがあるため、その時点で「終了」する理由がわかりません。

このエラーは、Time.now 参照を使用しようとしたことと関係があるのでしょうか。それは能力ファイルで有効な機能ではありませんか? もしそうなら、属性の日付が能力がテストされている日付よりも遅いかどうかを確認する別の方法はありますか?

これをブロックにしようとすると、次のようになります。

次のエラーが表示されます。

そして、=>をどこに置くべきかわからないので、私は再び立ち往生しています

外側の中括弧を削除しようとすると、ブロックは次のようになります。

次のエラーが表示されます。

だから、ランダムなことを試してみて、括弧を次のように変えようとしました:

(したがって、外側のレベルの中括弧の代わりに角括弧を使用します) - もうその行で停止することはありません。なぜそれが機能するのかは本当にわかりませんが(シードデータでまだテストしていません)、エラーがスローされるのを止めました.

ありがとうございました

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

ruby-on-rails - rspec で cancancan の能力をテストする

rspecを使用してカンカンカンの能力をテストしようとしています

しかし、特定のユーザーができることをテストするのではなく、ユーザーができないことをテストしようとしています。

今、私は次のようなコンテキストのブロックを持っています:

これは、 type のユーザーがモデルmanagerへのいかなる形式のアクセス権も持ってはならないことを明確に示しています。Question

itこのブロック全体を 1 つのブロックだけで、1 つのブロックに直接書き込む方法はありexpectますか?

以下のように書くことを考えました。

しかし、このテストは、そのリソースの能力の 1 つが付与されていないのと同じくらい合格するため、これは必ずしも意図したとおりに機能するとは限らないと考えています。

要するに、そのようなシナリオをテストする直接的な方法はありますか? ありがとうございます。

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

ruby-on-rails-4 - Cancancan のネストされたリソース認証が mongoid で失敗する

ここで簡単に説明します。問題は、mongoid を使用してネストされたリソースを承認するにはどうすればよいかということです。ProjectモデルとモデルがあるとしProject::Taskます。Projectが多いProject::Task。コントローラーレベルで承認したいのですが、別のタスクProject::Taskを表示したくありません。Projectだから基本的に私はそれを処理するために以下を行います:

load_and_authorize_resource :project, class: Project load_and_authorize_resource :task, through: :project_id, class: Project::Task

しかし、これはうまくいきません。常に 403 がスローされます。これを行う適切な方法は何ですか?

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

ruby-on-rails - batch_action の ActiveAdmin の CanCan 機能

一部のユーザーに投稿の読み取り、作成、および削除 (batch_action を使用) を許可したいが、投稿の更新は許可したくないとします。このようなもの:

しかし、バッチアクションを実行しているとき、 cancan が次のような厄介な条件を追加していることがわかります

ソロのcrud操作(:read、:update、:create、:destroy)の代わりに:manageを使用している場合、うまく機能します。

何か案は ?

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

ruby-on-rails - Rails - initialize_cancan_ability の ActiveAdmin および CanCan カスタム オーバーライド メソッド

ここで提案されているように、リクエストデータをアビリティモデルに渡そうとしています:

そしてここ:

参照: https://github.com/ryanb/cancan/wiki/Accessing-request-data

ただし、CancanAdapter で ActiveAdmin を使用しており、次の方法で別の初期化呼び出しを使用しています。

参照: https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/cancan_adapter.rb

initialize_cancan_abilityでは、例のような要求データを渡すことができるように、どのように/どこで再定義できcurrent_abilityますか?

基本的に、最後の行を次のように置き換えたいと思っています。

klass.new user, request

ありがとう。

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

ruby-on-rails - ユーザーが多くの会社を持っている場合、ユーザーに役割を追加する方法は?

私のアプリでは、ユーザーは多くの会社を持っている可能性があり、企業内で crud アクションに対してさまざまな権限を持つことができます。現在、cancancan gem を使用しており、承認は次のようになっています。

ユーザー.rb

Role.rb

ユーザーロール.rb

アビリティ.rb

ユーザーが別の会社を選択した場合、ユーザーは会社モデルを管理できますが、別の会社で権限を持っていません。ユーザーの会社IDを検出する方法は?