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(...) だった場合は保存されますが、新しいメソッドではありません。ありがとう!