RSpec没有重载或没有保存对象

时间:2014-09-16 14:50:44

标签: ruby-on-rails rspec

我遇到了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

看起来重装或保存无效。不知道我能做什么。在其他项目中进行相同的测试,但没有设计。可能是这个问题的原因吗?

1 个答案:

答案 0 :(得分:0)

它是设计:)

设计不允许您在未经确认的情况下更改email。当您设置另一个电子邮件时,将其保存在unconfirmed_email中,生成confirmation_token并发送电子邮件进行确认。因此,您与gem设计功能存在冲突。

不确定,但我认为您可以在保存

后检查unconfirmed_email是否已下降