Я предполагаю, что вы не вошли в систему, когда выдается ошибка. NoMethod не имеет в виду #authorized ?. На самом деле это относится к методу #login current_user. Если вы не вошли в систему, то current_user равен nil, что приводит к NoMethod, когда current_user.login вызывается в #authorized?.
Любой помощник, как уполномоченный? что проверка статуса пользователя должна включать проверку logged_in? Сначала обойти эту проблему. Попробуйте это ...
def authorized?
logged_in? and current_user.login == "admin"
end
Таким образом, вы выходите из условия, если вы не вошли в систему, и вы не пытаетесь получить доступ к методу #login, если у вас нет доступного объекта.
Вы также можете ознакомиться с некоторыми из доступных схем проверки подлинности на основе ролей, которые работают с Restful_Authentication. Если ваши шаблоны доступа будут более сложными, чем просто проверка администратора, вам будет проще использовать один из этих плагинов.
Кстати, дальше в authenticated_system.rb вы найдете этот код:
# Inclusion hook to make #current_user and #logged_in?
# available as ActionView helper methods.
def self.included(base)
base.send :helper_method, :current_user, :logged_in?, :authorized? if base.respond_to? :helper_method
end
Это то, что делает методы в этом модуле доступными в качестве вспомогательных методов в представлениях. Если вы добавите метод в authenticated_system.rb, который возвращает статус пользователя (например, что-то вроде #superuser?), Вам нужно будет добавить этот символ метода к вызову base.send в этом коде. Опять же, если вы пишете много кода для контроля доступа, изучение одного из плагинов будет в порядке.