2013-05-07 92 views
13

我有这个在我的生产线示范Rspec的验证唯一性范围

validates :home_team, :uniqueness => { :scope => [:visiting_team, :event_datetime], 
:message => "** DOUBLE EVENT **" } 

我有这个在我的规格

describe Line do 
    it { should validate_uniqueness_of(:home_team).scoped_to(:visiting_team, :event_datetime) } 

我得到这个错误...

失败:

1) Line 
Failure/Error: 

it { should validate_uniqueness_of(:home_team).scoped_to(:visiting_team, :event_datetime) } 
    Did not expect errors to include "has already been taken" when home_team is set to "arbitrary_string", got error: 
# ./spec/models/line_spec.rb:7:in `block (2 levels) in <top (required)>' 

任何想法,为什么这是失败?

回答

28

我认为你需要做到这一点让它通过

it { should validate_uniqueness_of(:home_team).scoped_to(:visiting_team, :event_datetime).with_message("** DOUBLE EVENT **") } 

是“已拍摄的”独特的默认的错误消息。

+0

嗨罗伊:)现在我得到了......我想我将不得不尝试新的方法。 1)线路 故障/错误:它{应当validate_uniqueness_of(:HOME_TEAM).scoped_to(:visiting_team,:event_datetime).with_message( “**双次事件**”)} NoMethodError: 未定义的方法'变化”的1:Fixnum #./spec/models/line_spec.rb:7:in ' – slindsey3000 2013-05-08 14:30:39

+0

这也适用于我,但是如果你想验证唯一性呢'除非: - > {home_team.nil? '',你会如何测试? – Caleb 2016-04-14 19:25:23