問題タブ [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.
ruby-on-rails - Pundit gem を使用して ID の配列を承認する
has_many 関連付けの複数選択ボックスがあります。パラメータは次のようになります。
強力なパラメーターを使用して、私はこの属性を許可しません。なぜなら、私は自分で承認したいので、人々が好きなものをただ入れることができないからです。
このアプローチでは、すべての foo を見つけてループし、それぞれを個別に承認する必要があります。できれば Pundit gem を使用して、has_many 承認を管理する簡単な方法はありますか?
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 つの回避策を見つけましたが、いずれも適切ではないようです。
- ビューで既存の @projects 変数を使用します。つまり、次のようになります。
policy(@projects[0])
- このインスタンス変数を定義する行を projects#index コントローラー アクションに追加します。
@project = Project.new
(または上記のようなビューで直接:policy(Project.new)
)
最初の解決策では @projects 配列が空になるという同じエラーが発生し、2 番目の解決策では冗長なインスタンス変数が作成されます。ポリシー ヘルパーが知る必要があるのは、承認ロジックを適用したいクラスだけです。
それを達成するための適切な方法に関する提案はありますか?
ruby-on-rails - 期待構文を使用した pundit の RSpec テスト
次の仕様を新しい期待構文に変換しようとしていますが、誰か助けてもらえますか?
permit()
私はそれを試しましたが、マッチャーを返すため機能しませんでした-- RSpec::Matchers::DSL::Matcher
:
ruby-on-rails - pundit gem の使用時に関連オブジェクトを認可する
ユーザー オブジェクトがあり、ユーザーが 1 つの basicinfo を持っている場合。ユーザーショーアクションで私は持っています:
そして show.html.erb では、次のようなユーザーの基本情報を表示する必要があります。
この場合、ユーザーの show アクションで basicinfo も許可する必要がありますか?
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 クラスのプライベート メソッド
およびアクション ルール
メソッド エラーは返されません。
ruby-on-rails - CanCan は Rails 4 では完全にはサポートされていません
Ryan Bates は CanCan の開発をやめたようです。Rails 4 は完全にサポートされていません。そして、ready4rails4 は動作しないと言っています。
CanCan を別の承認ライブラリに置き換える必要がありますか?
よろしく
ruby-on-rails - 名前空間で Pundit を使用する
私のプロジェクトでは、かなり一般的な名前空間「admin」があります。
Pundit gem を使用して適切な承認を設定していますが、名前空間内のコントローラーで使用するのは難しいことがわかりました。私のポリシーは以下のように構成されています
コントローラーに非常に似ています。
ただし、コントローラー内で「承認」メソッドを使用すると、アプリが「ユーザーポリシーを見つけることができません」というエラーだけが表示されます。私の UserPolicy は次のようになります。
Punditに名前空間内のこれらのポリシーを表示させるにはどうすればよいですか?