2012-12-20 124 views
1
class User < ActiveRecord::Base 
    attr_accessible :username, :password 
    attr_accessor :username, :password 

    validates :username, :presence => true, :uniqueness => true 
    validates :password, :presence => true 
end 

测试:唯一性约束不影响领域

it "prevents username duplication" do 
    FactoryGirl.create(:user, username: 'ted').should be_valid 
    FactoryGirl.build(:user, username: 'ted').should_not be_valid 
    end 

我已经证实,User.count()是2.什么是我与唯一性约束的缺失?

+2

首先,你的测试失败了吗? 'FactoryGirl.build'不会创建模型,只需将其构建在内存中即可。如果你得到'User.count == 2',你可能已经在你的数据库中有了另一个不相关的用户,你能检查这个吗? – PinnyM

+0

对@P @ nnyM而言 - 可能是在创建用户记录的规范的前(:each)或前(:all)的一部分中,导致“2”的计数? – jefflunt

+0

如果将它切换到创建状态,用户数将变为2.对不起,我的意思是当记录正确保存时,我得到2. 验证应该会影响第二个建立的模型,对不对?无论如何,我的控制器正在创建用户对象,因此无论用户名是否唯一,都会不断创建用户。 –

回答

0

attr_accessor中断模型。摆脱那条线。