我遇到了rspec的问题。
这是我的测试代码:
describe "email address with mixed case" do
let(:mixed_case_email) { "Foo@ExAMPle.CoM" }
it "should be saved as all lower-case" do
@user2 = FactoryGirl.create(:user, email: 'aaaa@aaa.com')
@user2.email = mixed_case_email
p @user2.email
p @user2.save!
p @user2.email
p @user2.reload.email
expect(@user2.reload.email).to eq mixed_case_email.downcase
end
end
我的终端输出:
"Foo@ExAMPle.CoM"
true
"aaaa@aaa.com"
"aaaa@aaa.com"
我的用户模型:
#encoding: UTF-8
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable,
:validatable, :confirmable, :lockable,
:timeoutable, :omniauthable
before_validation { self.email.downcase! if self.email }
validates :email, presence: true, length: {:maximum => 60}
end
看起来重装或保存无效。不知道我能做什么。在其他项目中进行相同的测试,但没有设计。可能是这个问题的原因吗?
答案 0 :(得分:0)
它是设计:)
设计不允许您在未经确认的情况下更改email
。当您设置另一个电子邮件时,将其保存在unconfirmed_email
中,生成confirmation_token
并发送电子邮件进行确认。因此,您与gem设计功能存在冲突。
不确定,但我认为您可以在保存
后检查unconfirmed_email
是否已下降