Как отсеивать запросы Devise при поиске пользователя в базе данных - PullRequest
3 голосов
/ 26 марта 2012

Кто-нибудь знает, как отменить выборку Разрабатывать запросы при (аутентификации или проверке) пользователя в каждом запросе?

Допустим, у меня есть эта модель пользователя с областью действия

class User < ActiveRecord::Base
  default_scope where(group_id: 1)
end

При аутентификации я уже вышел из области видимости, переопределив find_for_authentication метод разработки:

def self.find_for_authentication(conditions)
  User.unscoped { super }
end

Но когда я захожу на любую страницу с фильтром :authenticate_user!, devise выходит из системы, потому что использует область. Я также пытался отсканировать метод active_for_authentication?, но он не работал.

Кто-нибудь знает, где Devise извлекает текущего пользователя из базы данных в каждом запросе на страницу, отфильтрованную по :authenticate_user!?

Я использую Rails 3.2.1 и Devise 2.0.

Ответы [ 2 ]

1 голос
/ 18 февраля 2014

Вы можете переопределить метод current_user в своем файле application_controller.rb:

def current_user
  User.unscoped { super }
end
0 голосов
/ 06 января 2016

Другой способ:

class User < ActiveRecord::Base
  def self.serialize_from_session(key, salt)
    self.unscoped { super }
  end
end

См .: https://stackoverflow.com/a/24990576/464685

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