Обратный вызов в Application Controller error - NameError (неопределенная локальная переменная или метод - PullRequest
0 голосов
/ 02 декабря 2010

Я обновляю приложение с Rails 2 до 3. Я использую подход с правами и ролями для аутентификации, которая отлично работала под Rails 2. В моем Application Controller (application.rb) у меня есть:

класс ApplicationController

def check_authentication
    unless session[:user]
            session[:intended_resource] = request.request_uri
            session[:intended_action] = action_name
            session[:intended_controller] = controller_name
            redirect_to :controller => "sessions", :action => "new"
            return false
     end
 end

 def check_authorization
   user = User.find(session[:user])
   unless user.roles.detect{|role|
     role.rights.detect{|right|
       right.action == action_name && right.controller == self.class.controller_path
       }
     }
     flash[:notice] = "You are not authorized to view the page you requested"
     request.env["HTTP_REFERER"] ? (redirect_to :back) : (redirect_to :controller => "sessions", :action => "new")
     return false
   end
 end

конец

В другие мои контроллеры я включил фильтр before.

   before_filter :check_authentication,:check_authorization

Я получаю следующее сообщение об ошибке, например, при переходе к контроллеру панели инструментов.

  NameError (undefined local variable or method `check_authentication' for DashboardController:0x0000010291a0c0):

Что-то еще мне нужно изменить или добавить, чтобы это работало в Rails 3?

Спасибо, Аарон

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

Проблема решена.Каким-то образом во время моего обновления у меня в папке контроллеров были файлы с именами application.rb и application_controller.rb.Оба были определены как ApplicationController

0 голосов
/ 02 декабря 2010

Убедитесь, что ваш DashboardController наследуется от ApplicationController, т.е. DashboardController < ApplicationController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...