Michael Hartl 的 rails 教程的清单 6.20 显示了以下代码:
before do
@user = User.new(name: "Example User", email: "user@example.com")
end
.
.
.
describe "when email address is already taken" do
before do
user_with_same_email = @user.dup
user_with_same_email.email = @user.email.upcase
user_with_same_email.save
end
it { should_not be_valid }
end
我无法理解这个概念,因为@user.dup 返回完全相同对象的表示,该对象被复制到 user_with_same 电子邮件中,但@user 从未保存到文件中任何位置的数据库中。因此,user_with_same_email.save 测试应该每次都有效。但是,测试通过了。有人请解释一下...@user = User.new(...) 上是否有隐式数据库保存?我知道如果它是 User.create(...) 会有一个保存,但不是新方法。谢谢!