2013-05-07 35 views
13

Tôi có điều này trong mô hình dòng của tôiRSpec xác nhận độc đáo với phạm vi

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

Tôi có điều này trong spec của tôi

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

tôi nhận được lỗi này ...

thất bại:

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)>' 

Bất kỳ ý tưởng nào tại sao điều này không thành công?

Trả lời

28

Tôi nghĩ rằng bạn cần phải làm điều này làm cho nó vượt qua

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

Thông báo lỗi mặc định của tính độc đáo là “đã được thực hiện”.

+0

Hi Roy :) Bây giờ tôi nhận được .... Tôi nghĩ rằng tôi sẽ phải thử cách tiếp cận mới. 1) Dòng Failure/Lỗi: nó {nên validate_uniqueness_of (: HOME_TEAM) .scoped_to (: visiting_team,: event_datetime) .with_message ("** TRƯỜNG ĐÔI **")} NoMethodError: phương pháp xác định 'thay đổi' cho 1: Fixnum # ./spec/models/line_spec.rb:7:in 'block (2 cấp độ) trong ' – slindsey3000

+0

Điều đó cũng phù hợp với tôi, nhưng nếu bạn muốn xác nhận tính duy nhất' trừ khi: -> {home_team.nil? } ', làm thế nào bạn sẽ kiểm tra điều đó? – Caleb

Các vấn đề liên quan