Ruby on rails 在Rails用户模型中调用User.all只返回当前用户

Ruby on rails 在Rails用户模型中调用User.all只返回当前用户,ruby-on-rails,devise,Ruby On Rails,Devise,我试图调试Rails项目中的一个问题,其中用户模型中出现了一些错误 一些binding.pry操作使我意识到,当我从用户模型内部调用User.all时,ActiveRecord正在生成以下SQL SELECT `users`.* FROM `users` WHERE `users`.`provider` = 'google_oauth2' AND `users`.`uid` = '...' 调用self.class.all时也会发生同样的情况 在任何阶段我都没有要求这个查询限制provider

我试图调试Rails项目中的一个问题,其中用户模型中出现了一些错误

一些binding.pry操作使我意识到,当我从用户模型内部调用
User.all
时,ActiveRecord正在生成以下SQL

SELECT `users`.* FROM `users` WHERE `users`.`provider` = 'google_oauth2' AND `users`.`uid` = '...'
调用
self.class.all
时也会发生同样的情况

在任何阶段我都没有要求这个查询限制provider或uid,在类上也没有设置默认作用域

我认为唯一相关的是,这是用户模型的设计设置

devise :database_authenticatable, :registerable,
       :recoverable, :rememberable, :trackable, :validatable,
       :omniauthable
我的问题
  • 为什么会这样
  • 这是我需要解决的问题,还是有其他方法来实现
    User.all
笔记
  • User.all
    不是我的实际调用,但它是问题的最简单简化
方法 调用它的方法是类上的公共方法

def create_slug
  if User.where(slug: name.parameterize).present?
    #Stuff happens here, but the User.where isn't bringing back what I would expect
  end
end

你能把你的方法粘贴到你调用它的地方吗?也许有一些作用域已经被使用了?显示您的代码。@usmanali–我已将该方法的外壳复制到我的主要问题中,谢谢。@MarekLipka该方法有作用域,但在我的查询中没有调用任何作用域。您不需要
全部
。顺便说一句,我想知道为什么会发生这种情况。