Поскольку :authenticate_user!
является символом, :foo == true
является действительным.Таким образом, ваш пример всегда будет равняться before_filter :authenticate_user!
Попробуйте что-то вроде (не уверен в ваших настройках здесь ..):
if method_defined?(:authenticate_user!)
before_filter :authenticate_user!
else
before_filter :authenticate_admin!
end
Если вы определили оба метода и хотитезапустите authenticate_user!
, затем, если это вернет false, запустите authenticate_admin!
, просто создайте один authenticate!
метод, который проверяет использование / admin, и запустите before_filter
.