gpt4 book ai didi

ruby-on-rails - ROR 的 find_by 替代方案

转载 作者:行者123 更新时间:2023-12-04 07:40:43 26 4
gpt4 key购买 nike

我正在学习 6.3 版的 Michael Hartel 的 Rails 教程,需要 user_spec 模型的替代代码。他的代码是:

let(:found_user) { User.find_by(email: @user.email) }

看起来我可以使用 where,但不确定语法是否正确。我尝试了以下几种变体:

let(:found_user) { User.where(:email => "@user.email")}

我确定这是一个非常简单的答案,但我不太明白。

最佳答案

let(:found_user){User.where(email: @user.email).first}

let(:found_user){User.find_by_email(@user.email)}

第一个使用 where 的会返回匹配 where 子句的用户集合,这就是为什么您需要 .first(它不执行sql,直到你用 .all.first.each 之类的东西获取记录。

不过,我会说在单元测试中执行数据库命令并不是最佳实践。你具体测试什么?是否有理由需要将用户保存在数据库中而不能只做类似的事情:

let(:user){User.new(email: 'some email')}

关于ruby-on-rails - ROR 的 find_by 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com