這裏是RSpec的測試,以檢查電子郵件的唯一性(從http://ruby.railstutorial.org/chapters/modeling-users.html#code-validates_uniqueness_of_email_test)Rspec的測試檢查獨特
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "[email protected]")
end
.
.
.
describe "when email address is already taken" do
before do
user_with_same_email = @user.dup
user_with_same_email.save
end
it { should_not be_valid }
end
end
正如作者所說,我加入
class User < ActiveRecord::Base
.
.
.
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: true
end
到我的用戶模型,測試通過。
但是@user還沒有被保存到數據庫中(我找不到@ user.save語句是代碼的任何地方)。因此,user_with_same_email已經是唯一的,因爲沒有其他用戶使用同一個電子郵件數據庫。那它是如何工作的?
我在控制檯中創建了類似的東西。 user_with_same_email.valid?返回false(錯誤「已被採用」),但user_with_same_email.save仍然有效。爲什麼?
哦,我明白了。我認爲這是另一回事。現在這一切都有道理。謝謝:) – TradeRaider
不客氣,很高興答案幫助。 –