如何在数据库中查找用户时取消设计Devise查询

时间:2012-03-26 14:50:01

标签: ruby-on-rails

任何人都知道在每个请求中(验证或验证)用户时如何取消设计Devise查询?

假设我有这个带范围的用户模型

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!过滤器的页面时,设计会注销用户,因为它正在使用范围。我也尝试取消active_for_authentication?方法,但它没有用。

有人知道Devise从每个请求中将当前用户从当前用户获取到由:authenticate_user!过滤的页面吗?

我正在使用Rails 3.2.1和Devise 2.0。

2 个答案:

答案 0 :(得分:1)

您可以覆盖current_user文件中的application_controller.rb方法:

def current_user
  User.unscoped { super }
end

答案 1 :(得分:0)

另一种方式:

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

请参阅:https://stackoverflow.com/a/24990576/464685