gpt4 book ai didi

ruby-on-rails - 为什么在保存对象后使用 'reload' 方法? (Hartl Rails Tut 6.30)

转载 作者:行者123 更新时间:2023-12-03 09:15:31 25 4
gpt4 key购买 nike

我正在编写 Hartl 的 Rails 4 教程第 6 章的练习。第一个练习测试以确保用户电子邮件地址正确小写:

require 'spec_helper'

describe User do
.
.
.
describe "email address with mixed case" do
let(:mixed_case_email) { "Foo@ExAMPle.CoM" }

it "should be saved as all lower-case" do
@user.email = mixed_case_email
@user.save
expect(@user.reload.email).to eq mixed_case_email.downcase
end
end
.
.
.
end

我不明白的是为什么这里需要“重新加载”方法。曾经 @user.email设置为 mixed_case_email的内容和 已保存 ,不是 @user.reload.email@user.email同样的事情?我把 reload 方法拿出来尝试一下,它似乎没有改变任何测试。

我在这里缺少什么?

最佳答案

在这种情况下是的 @user.reload.email@user.email是一样的。但最好使用 @user.reload.email而不是 @user.email要检查数据库中保存的内容,我的意思是您不知道您或某人是否在 after_save 中添加了一些代码来更改它的值,那么它不会对您的测试产生影响。

编辑:
而且您正在检查的是保存在数据库中的内容,所以 @user.reload.email完全反射(reflect)数据库中保存的内容然后 @user.email

关于ruby-on-rails - 为什么在保存对象后使用 'reload' 方法? (Hartl Rails Tut 6.30),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22259641/

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