問題タブ [pundit]

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 投票する
2 に答える
1903 参照

ruby-on-rails - Pundit gem を使用して ID の配列を承認する

has_many 関連付けの複数選択ボックスがあります。パラメータは次のようになります。

強力なパラメーターを使用して、私はこの属性を許可しません。なぜなら、私は自分で承認したいので、人々が好きなものをただ入れることができないからです。

このアプローチでは、すべての foo を見つけてループし、それぞれを個別に承認する必要があります。できれば Pundit gem を使用して、has_many 承認を管理する簡単な方法はありますか?

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

ruby-on-rails - インスタンス変数を使用できない Pundit でポリシー ヘルパーを使用する

そこで、ユーザー認証ソリューションの評論家を試みることにしました。policy以下の単純なケースのように、インスタンス変数が nil である可能性があるビューでヘルパーを使用する方法を知りたいです。

アプリ/ビュー/プロジェクト/index.html.slim

app/controllers/projects_controller.rb

アプリ/ポリシー/project_policy.rb

Projects#index ページに「New Project」リンクを表示したいのですが、このビューで使用できる @project インスタンス変数がなく、エラーが発生します。

Pundit::プロジェクトの NotDefinedError#index

のポリシー NilClassPolicy が見つかりません

nil のインスタンス変数を渡すため、明らかにエラーが表示@projectされます。したがって、NilClass は明らかに承認する必要がありません。

この問題を正しく実行するための 2 つの回避策を見つけましたが、いずれも適切ではないようです。

  1. ビューで既存の @projects 変数を使用します。つまり、次のようになります。policy(@projects[0])
  2. このインスタンス変数を定義する行を projects#index コントローラー アクションに追加します。@project = Project.new(または上記のようなビューで直接: policy(Project.new))

最初の解決策では @projects 配列が空になるという同じエラーが発生し、2 番目の解決策では冗長なインスタンス変数が作成されます。ポリシー ヘルパーが知る必要があるのは、承認ロジックを適用したいクラスだけです。

それを達成するための適切な方法に関する提案はありますか?

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

ruby-on-rails - 期待構文を使用した pundit の RSpec テスト

次の仕様を新しい期待構文に変換しようとしていますが、誰か助けてもらえますか?

permit()私はそれを試しましたが、マッチャーを返すため機能しませんでした-- RSpec::Matchers::DSL::Matcher:

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

ruby-on-rails - pundit gem の使用時に関連オブジェクトを認可する

ユーザー オブジェクトがあり、ユーザーが 1 つの basicinfo を持っている場合。ユーザーショーアクションで私は持っています:

そして show.html.erb では、次のようなユーザーの基本情報を表示する必要があります。

この場合、ユーザーの show アクションで basicinfo も許可する必要がありますか?

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

ruby-on-rails-3 - rails3 結合テーブルの値に基づく専門家のポリシー

ユーザー has_many constructusers。後者は has_many :through 関係の結合テーブルであり、Construct です。アプリケーションの目的で、結合テーブル (constructusers.manager、constructusers.operator など) でブール ロールが定義されますが、admin はユーザー属性です。

したがって、アクションのポリシーを定義するときが来ると、関係が認識されている間、「manager」に対して次のメソッド エラーがスローされます ActiveRecord::Relation:0x000001035c4370

関係(適切なものだと思います)が正しい場合、ブール属性が認識されないのはなぜですか?

以下のコメントによると、単純な理由で複数形です。したがって、フィルタリングには次のものが必要です。

...コントローラーで実行され、ビューに影響を与えます。それにもかかわらず、Pundit を適切に処理するには、これを除外する必要があります...まだ、その属性を設定する前のフィルターで application_controller を使用します。ただし、その検索条件を使用した before_filter :set_constructuser_manager は、nil ケースの処理を使用して、ポリシーを記述するときに影響を与えません。

更新:以下のコメントに従って。Pundit クラスのプライベート メソッド

およびアクション ルール

メソッド エラーは返されません。

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

ruby-on-rails - CanCan は Rails 4 では完全にはサポートされていません

Ryan Bates は CanCan の開発をやめたようです。Rails 4 は完全にサポートされていません。そして、ready4rails4 は動作しないと言っています。

CanCan を別の承認ライブラリに置き換える必要がありますか?

よろしく

0 投票する
4 に答える
5455 参照

ruby-on-rails - 名前空間で Pundit を使用する

私のプロジェクトでは、かなり一般的な名前空間「admin」があります。

Pundit gem を使用して適切な承認を設定していますが、名前空間内のコントローラーで使用するのは難しいことがわかりました。私のポリシーは以下のように構成されています

コントローラーに非常に似ています。

ただし、コントローラー内で「承認」メソッドを使用すると、アプリが「ユーザーポリシーを見つけることができません」というエラーだけが表示されます。私の UserPolicy は次のようになります。

Punditに名前空間内のこれらのポリシーを表示させるにはどうすればよいですか?