Ruby on rails 在Rails用户模型中调用User.all只返回当前用户
我试图调试Rails项目中的一个问题,其中用户模型中出现了一些错误 一些binding.pry操作使我意识到,当我从用户模型内部调用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
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该方法有作用域,但在我的查询中没有调用任何作用域。您不需要
全部
。顺便说一句,我想知道为什么会发生这种情况。