我正在尝试调试Rails项目中的问题,其中User模型中出现了问题。
一些binding.pry动作让我意识到当我从用户模型中调用User.all
时,ActiveRecord正在生成以下SQL;
SELECT `users`.* FROM `users` WHERE `users`.`provider` = 'google_oauth2' AND `users`.`uid` = '...'
调用self.class.all
时会发生同样的情况。
在任何阶段我都没有要求此查询限制提供者或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