問題タブ [cancan]
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 - CanCan ジェム | できません:インデックス、ユーザー
非常に基本的なユーザー モデルです。管理者ユーザーに :manage all をお願いします
そうでなければ、インデックス、ユーザー、およびその他のオプションを使用できませんが、管理者以外のユーザーがユーザーインデックスを表示できないようにブロックしようとすると、管理者ユーザーもアクセスできません。
これが私の能力です.rb
すべてのユーザーがユーザー インデックスからブロックされないようにするにはどうすればよいですか?
よろしく
ダン
ruby-on-rails - CanCan を使用して、リソースをインスタンス化するアクションの承認をスキップする必要がありますか?
私は、より大きな完全なカード セットからカードのランダム リストを選択する Web アプリを作成しています。Card モデルと CardSet モデルがあります。どちらのモデルにも、7 つのアクション (:index、:new、:show など) の完全な RESTful セットがあります。CardSetsController には、ランダム セットを作成するための追加のアクションがあります: :random.
認証用の Devise と承認用の CanCan を追加しました。「編集者」の役割を持つユーザーがいます。編集者は、新しい CardSet を作成できます。ゲスト ユーザー (ログインしていないユーザー) は、 アクション:indexと:showアクションのみを使用できます。これらの承認は設計どおりに機能しています。編集者は現在、:randomと:newアクションの両方を問題なく使用できます。予想どおり、ゲスト ユーザーはできません。
ゲスト ユーザーがアクションを使用できるようにしたいのですが、アクションは使用:randomできません:new。つまり、新しいランダム セットを表示できますが、保存することはできません。アクション ビューの[保存] ボタンは、:random(設計どおり) ゲスト ユーザーには表示されません。問題は、:randomアクションが最初に行うことは、CardSet モデルの新しいインスタンスを作成してビューを埋めることです。cancanload_and_authorize_resourceが新しい CardSet を試行すると、CanCan::AccessDenied 例外がスローされます。したがって、ビューは読み込まれず、ゲスト ユーザーには「続行する前にサインインまたはサインアップする必要があります」というメッセージが表示されます。
呼び出しに渡すことでアクションload_and_authorize_resourceをスキップするように指示できることに気づきましたが、それは何らかの理由で「間違っている」と感じています。:random:except => :random
これを行う「正しい」方法は何ですか?新しい CardSet をインスタンス化せずに、新しいランダム セットを作成する必要がありますか? 先に進んで例外を追加する必要がありますか?
アップデート
上記の能力クラスは含めませんでした。「:random」アクションを含めるように更新しましたが、まだ正しく機能していません。
ruby-on-rails - Railsで多くのユーザー認証を行う1つのアカウント
次の問題に対してどのアプローチをお勧めしますか:私のアプリには、同じアカウントでタスクを入力する複数のユーザーがいるアカウントが必要です。1人のユーザー(アカウントを開いたユーザー)のみが管理者権限を持ちます。
認証にAuthlogicを使用し、ユーザー特権を決定するためにCanCanを使用することを考えています。重要なのは、アカウントを開いたユーザーをデフォルトで管理者にして、別の権限で自分のアカウントに他のユーザーを生成できる唯一のユーザーにすることです。
ruby-on-rails-3 - DoubleRenderErrorを工夫する
アプリケーションスタック: Rails3、CanCan、Devise、Shoulda
ネストされたリソースがいくつかあり、Shoulda でテストしたいのですが、次の DoubleRenderError が発生します。
このテストでは、認証されていないユーザーがネストされたリソースにアクセスできるかどうかを確認します (アクセスすべきではありません)。
試験方法
コントローラーの方法:
認証されたユーザーを使用したすべてのテストは正常に機能します-誰かが私にヒントを与えることができます. どうもありがとう!ベン
ruby-on-rails - ユーザーの役割ごとに異なるビューのセット
私はレールアプリを開発しており、上級者と基本者の2つの異なるユーザーの役割があります。
基本ユーザーのビュー ( CanCan を使用する ai ) のリンクを非表示にする代わりに、上級ユーザー用と基本ユーザー用の2 つの異なるビュー セットを管理したいと考えています。
現在、私はこのように働いています:
しかし、すべてのアクションで基本ユーザーのテンプレートを指定するのは好きではありません ( { render :template => "devices/index_basc.html.erb" } ) 他の方法があると思います (もっときちんとしたい :)
あなたはなにか考えはありますか ?
ありがとう、アレッサンドロ
ruby-on-rails - CanCanのいくつかの問題
(私の英語でごめんなさい;)
私は rbates から CanCan を使い始めました。これは素晴らしい逸品ですが、いくつか問題があります。Scrap モデルがあり、ブール値フィールド :published があります (つまり、公開済み/未公開 (ドラフト) を意味します)。
私は自分の能力.rbにこのルールを持っています:
したがって、このオブジェクトは作成者以外によって編集/更新/削除できません。「表示」アクションで同じことをしたいです (作成者以外は下書きを読むことができませんか? ;) これを行う本当の方法は何ですか?
ありがとうございます!アンドレイ・オグネフスキー
ruby-on-rails - モデルから CanCan の can? メソッドにアクセスする
current_user次の方法を使用して、ビューまたはコントローラーから のパーミッションを取得できますcan?。
この構文を使用してモデルからこの機能にアクセスするにはどうすればよいですか:
ruby-on-rails - CanCan を使用して追加的に権限を定義する
私のアプリケーションには、編集者と管理者の 2 つの役割があります。編集者にはいくつかの権限が必要で、管理者にはすべての編集者権限とその他の権限が必要です。
ここに私の抜粋がありますability.rb
すべての管理者は編集者でもあるため、これでこれらの権限が定義されることを望みました。
- 管理者はすべての投稿を閲覧および編集できます
- 編集者はすべての投稿を読むことができますが、自分が作成した投稿のみを変更できます
ただし、CanCan はパーミッションを付加的に定義していないようです。つまり、CanCan がユーザーが編集者であることを確認すると (ユーザーが管理者でもある場合でも)、より制限的なパーミッションを適用します (つまり、のcan :edit, Post, :created_by_id => user.id代わりにcan :edit, Post)。
これを回避する方法はありますか?明らかな解決策には、コードを繰り返す必要があります。
ruby-on-rails - CanCanを使用したユーザーの能力をモデルの関連付けで検証する
次のようなTakeActionモデルがあります。
次のようなTakeActionNoteモデル:
CanCanを使用して、take_actionを所有するユーザーがメモを作成および破棄(管理)できるようにしようとしています。
このようなブロックで能力を定義してみました。
take_actionに問題なくメモを追加できますが、破棄しようとすると次のようになります。
アクションの実行におけるNoMethodErrornotesController#33 nil:NilClassの未定義のメソッド `take_action'
私が見逃している、または間違っていることはありますか?どんな助けでも大歓迎です。ありがとう!
ruby-on-rails - CanCanのaccessible_by(レコードの取得)のcurrent_abilityとは?
CanCan のドキュメントでは、アクセス可能なすべてのレコードを次の方法で取得する方法を示しています。
しかし、何current_abilityですか?認証と承認に使用している現在のユーザーを渡そうとしましたが、次のエラーが発生しました。
私は何に渡すべきaccessible_byか、ここで何が間違っているのでしょうか?