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

ruby-on-rails - Rails/Pundit ArgumentError

演習では、投稿を更新するために出席してログインすることに加えて、ユーザーが投稿の所有者または一般管理者のいずれかである必要があるような承認を作成しようとしています。専門家ポリシーを実装しようとしています(認証に Devise を使用)。

PostController クラス:

ApplicationPolicy クラス:

* ユーザーモデル* :

Argument Error: で行き詰まりましたwrong number of arguments (2 for 1)。私の理解では、ポリシーメソッドはモジュールの一部であり、指定されたレコードと暗黙のユーザーとしてPundit新しいポリシーオブジェクトを初期化して返します。current_user誰かがこの問題に光を当てるのを手伝ってもらえますか?

エラーメッセージ:

行番号 3 が発生した /home/vagrant/code/bloccit/app/views/posts/show.html.erb の表示:

引数の数が間違っています (1 に対して 2)

完全なエラー トレース:

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

mysql - Joinテーブルを介したモデル所有権の専門家のスコープ - Rails 4

結合テーブルを介してユーザーを特定の会社に関連付けています。これは、すべての会社で多数のユーザーを保持できるようにする必要があるためです。

私の質問は、ユーザーが企業のインデックス ページにアクセスしたときに、それらのユーザーが関連付けられているものだけを表示するようにスコープを設定するにはどうすればよいですか?

@user を受け入れる会社レベルでスコープを作成する必要がありますか? または、これをすべて直接インラインで行うことはできますか? 私は一緒に何かをハックすることができましたが、まだ専門家に頭を悩ませていません。

このような:

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

ruby-on-rails - Rails 4 Devise、Pundit、Join Table ActionView::Template::Error (未定義のメソッド `task_definition_path' for #<#:0x6919b2b2>):

これが私のユースケースです:

  1. Devise for AuthN を使用した 1 つのユーザー モデルがあり、Pundit を AuthZ に使用しています。
  2. サブドメインの制約により、メイン アプリケーションへのアクセスを制限しています。
  3. エンド ユーザー向けのページがいくつかあり (ある時点で別の LandF になります)、管理ページなどもあります。ドリルを知っているよくある話です。
  4. :id の結合テーブルを利用して has_and_belongs_to_many を使用しています
  5. コントローラー、ビュー ディレクトリ、および移行を複数形で指定し、モデルを単数形で指定しています。例: TaskDefinition => モデル、TaskDefinitions => コントローラーおよびテーブル。
  6. デフォルトのルートが生成され、コンテンツが提供されました。
  7. ビュー ディレクトリでパーシャルを使用していますが、これは Ruby から JRuby への移植以来の非常に新しい問題です。

スタックトレース:

移行:

モデル:

コントローラ:

ルート:

見る:

レーキルート:

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

ruby-on-rails - Cannot complete the New controller action through Pundit gem

I have a Ruby on Rails web app where users creates notes. The note belongs to the user that created it.

I installed the Pundit gem to create authorizations, specifically an admin role.

I would like for a user to be able to:

  • create, update, or delete their notes

And for an admin to be able to do the same for any user's notes.

When I log in as an admin, I can create a new note. When I log in as a member, I cannot create a new note. I get instantly redirected to the root page, and never even brought to the new note page.

Here is the flash error message I receive:

Before installing Pundit, members were able to create a new note. So I assume it has something to do with my policies.

Here are the relevant methods from my application_policy.rb file:

Here is my note_policy.rb file:

And here are the relevant actions from my notes_controller.rb file:

I am trying to figure out why an admin can create a new note, but a member cannot.

Thank you.

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

devise - Devise-Pundit: Superadmin がユーザーを作成するためのページを作成しますが、実際にはユーザーを作成していません

スーパー管理者が実際にユーザーを作成できるようにするにはどうすればよいですか? ポリシー CreateusersPolicy は必要ですか? 私のコードは現在、ユーザーを作成できるページ/フォームに移動しますが、実際にはユーザーを作成しません。

さらに情報を含める必要がある場合はお知らせください。

config/routes.rb

コントローラー/application_controller.rb

また、ここの作成セクションに何を入れればよいかわかりません。

コントローラー/users_controller.rb

ビュー/ユーザー/create.html.erb

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

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

ruby-on-rails - Rails_admin: ユーザーと管理パネルを管理するには、admin_user または admin ロールを持つユーザーが必要です

私の Rails アプリケーション Web サイトでは、訪問者はサインアップしてコンテンツを作成できます。ユーザーモデルでデバイスを使用し、すべてがうまく機能します。

今、ウェブサイトのリソースやユーザーなどを管理するために rails_admin を使用したいと考えており、管理権限を持つ人だけがアクセスできるようにする必要があります。

管理パネルへのアクセス用に別の AdminUser モデルを作成するか、管理者の役割を持つ User モデルを使用し、いくつかの認証ライブラリを使用してアクセスを管理する必要があります。

私が1つのモデルのみを使用している場合、ユーザーが管理者の場合はサインイン後にユーザーを管理パネルにリダイレクトし、そうでない場合はユーザーをプロファイルにリダイレクトします。そして、私の場合、どの認可ライブラリ cancan または pundit がより適しているでしょうか。

ありがとう!

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

ruby-on-rails - undefined method 'authorize' with Pundit

I've installed the gem Pundit in my Rails app, and have followed the instructions in the README carefully.

However, when I use authorize in any of my controllers, I get the error message "undefined method 'authorize' for .

Also, when I try to use "policy" in a view, I get the error "undefined method 'policy'".

It's as if Pundit weren't installed at all!

I've included Pundit in my Application Controller.

I have an ApplicationPolicy file with all of my policies, then policy files for each type of record that inherit from the Application Policy.

For some reason, I can't paste any of my code into this question, so I'm hoping I've included enough information!

I'd appreciate any thoughts.