問題タブ [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.
ruby-on-rails - Rails 4 - CanCanCan - 式
CanCanCan を使用して、ability.rb で能力を定義しようとしています。
これが有効な表現かどうかはわかりません - これを扱っている例が wiki にありません。
Visionというモデルがあります。Vision には、:public というブール属性と、:public_vision という別の属性があります。
:public が true の場合、:public ビジョンを読み取る機能を作成したい
私はこれを試しました:
これは有効な構文ですか? コメントアウトできないルビのビットが多すぎるため、自分の能力ファイルをまだテストできません。
ruby-on-rails - Rails 4 & CanCanCan - 構文
Rails 4 アプリで CanCanCan を使用して機能を定義しようとしています。
私はこの能力を私の能力.rbファイルに持っています:
Time.now の後のコンマを削除しようとすると、次のエラーが発生します。
これらのエラー メッセージが何を意味し、何をしたいのかを解読する方法がわかりません。最初の形式では、コンマを => に置き換えることが正しい理由がわかりません。なぜなら、そのエラーに対して評価する必要がある 2 つの別個の属性があるからです。
2番目のエラーについては、クラスに入る必要がある他の能力の長いリストがあるため、その時点で「終了」する理由がわかりません。
このエラーは、Time.now 参照を使用しようとしたことと関係があるのでしょうか。それは能力ファイルで有効な機能ではありませんか? もしそうなら、属性の日付が能力がテストされている日付よりも遅いかどうかを確認する別の方法はありますか?
これをブロックにしようとすると、次のようになります。
次のエラーが表示されます。
そして、=>をどこに置くべきかわからないので、私は再び立ち往生しています
外側の中括弧を削除しようとすると、ブロックは次のようになります。
次のエラーが表示されます。
だから、ランダムなことを試してみて、括弧を次のように変えようとしました:
(したがって、外側のレベルの中括弧の代わりに角括弧を使用します) - もうその行で停止することはありません。なぜそれが機能するのかは本当にわかりませんが(シードデータでまだテストしていません)、エラーがスローされるのを止めました.
ありがとうございました
ruby-on-rails - rspec で cancancan の能力をテストする
rspecを使用してカンカンカンの能力をテストしようとしています
しかし、特定のユーザーができることをテストするのではなく、ユーザーができないことをテストしようとしています。
今、私は次のようなコンテキストのブロックを持っています:
これは、 type のユーザーがモデルmanager
へのいかなる形式のアクセス権も持ってはならないことを明確に示しています。Question
it
このブロック全体を 1 つのブロックだけで、1 つのブロックに直接書き込む方法はありexpect
ますか?
以下のように書くことを考えました。
しかし、このテストは、そのリソースの能力の 1 つが付与されていないのと同じくらい合格するため、これは必ずしも意図したとおりに機能するとは限らないと考えています。
要するに、そのようなシナリオをテストする直接的な方法はありますか? ありがとうございます。
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 がスローされます。これを行う適切な方法は何ですか?
ruby-on-rails - batch_action の ActiveAdmin の CanCan 機能
一部のユーザーに投稿の読み取り、作成、および削除 (batch_action を使用) を許可したいが、投稿の更新は許可したくないとします。このようなもの:
しかし、バッチアクションを実行しているとき、 cancan が次のような厄介な条件を追加していることがわかります
ソロのcrud操作(:read、:update、:create、:destroy)の代わりに:manageを使用している場合、うまく機能します。
何か案は ?
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
ありがとう。
ruby-on-rails - ユーザーが多くの会社を持っている場合、ユーザーに役割を追加する方法は?
私のアプリでは、ユーザーは多くの会社を持っている可能性があり、企業内で crud アクションに対してさまざまな権限を持つことができます。現在、cancancan gem を使用しており、承認は次のようになっています。
ユーザー.rb
Role.rb
ユーザーロール.rb
アビリティ.rb
ユーザーが別の会社を選択した場合、ユーザーは会社モデルを管理できますが、別の会社で権限を持っていません。ユーザーの会社IDを検出する方法は?