0

フォームの送信中に突然このエラーが発生し始めました。私が行った唯一の変更は、ヘルパーとしてマークされている ApplicationController で定義されたメソッドを呼び出すことです。

アプリ/コントローラー/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery

  helper_method :is_org_admin?

  #Check if current user is Admin in current organization or not
  def is_org_admin?
    session[:current_organization].is_admin?(current_user)
  end
end

is_admin? と定義されている

class Organization < ActiveRecord::Base
  has_many :memberships
  has_many :users, through: :memberships

  def is_admin?(user)
    member = memberships.where(user_id: user.id).first
    if member.nil?
      false
    else
      member.is_admin?
    end
  end
end

そして、is_org_admin? ビューテンプレートからメソッドが呼び出されています

アプリ/ビュー/ユーザー/index.html.haml

 %h1 Users
    - if is_org_admin?
      %p= link_to 'Invite new user', new_invitation_path

ApplicationControllerで削除するか、index.html.haml のprotect_from_forgeryヘルパー メソッドを呼び出すと、機能します。if is_org_admin?しかしprotect_from_forgery、ApplicationController で定義されたヘルパーを呼び出す条件を有効にすると、警告が表示され、ページでメッセージを続行する前にサインインまたはサインアップする必要があることが示されます。

ここで何が問題なのか誰か教えてください。

4

1 に答える 1

0

組織モデル全体を保存する代わりに、現在の組織のインスタンスを持つためにセッションでIDを保存しています。必要に応じて、その場で検索します。

Organization.find(session[:current_organization_id]).is_admin?(current_user)

それでも、組織ARが保存され、セッションから使用された場合、なぜ401が返されるのか疑問に思います。

于 2012-08-21T11:44:39.643 に答える