Я работаю над приложением Rails и настроил Devise и работал со всеми настройками по умолчанию, и я настраиваю CanCan.Devise 'user_signed_in?' недоступен из модели CanCan 'Ability'
Ниже приведен контент класса «Способность» (не совсем мой код, основанный на нескольких учебниках);
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user_signed_in?
can :manage, :all
end
end
end
Я знаю, что файл сам работает, как я добавил образец authorize! :edit, @document
к одному из моих контроллеров. Если я удалю линию if user_signed_in?
(и, конечно же, end
), тогда, когда присутствует строка can :manage, :all
, я могу получить доступ к действиям контроллера document
, и без него говорится: «Доступ запрещен».
Однако, когда я пытаюсь сделать это с помощью строки user_signed_in?
, я получаю следующее сообщение об ошибке;
NoMethodError в DocumentsController # редактировать
неопределенный метод `user_signed_in? для #
И, что интересно, user_signed_in?
прекрасно работает в моих взглядах, где я отображать окно входа в систему или детали, вошедшего в систему пользователя со if
... else
блок.
Любые идеи, как я могу получить доступ к user_signed_in?
здесь? В долгосрочной перспективе я намерен прочитать значение из записи пользователя, чтобы определить их уровень доступа, но важно, чтобы концепция работала, поскольку переменные будут поступать из одного и того же места!
Спасибо!