2013-05-07 16 views
13

ho questo nel mio modello LineaRspec convalidare unicità con portata

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

ho questo nel mio spec

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

ottengo questo errore ...

Fallimenti:

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

Qualche idea del perché questo non funziona?

risposta

28

Credo che hai bisogno di fare questo farlo passare

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

è “è già stata presa” Il messaggio di errore predefinito di unicità.

+0

Hi Roy :) Ora ho ... Penso che dovrò provare un nuovo approccio. 1) Linea Guasto/Errore: è {dovrebbe validate_uniqueness_of (: HOME_TEAM) .scoped_to (: visiting_team,: event_datetime) .with_message ("doppio evento ** **")} NoMethodError: metodo non definito 'cambiamento' per 1: Fixnum # ./spec/models/line_spec.rb:7:in 'block (2 livelli) in ' – slindsey3000

+0

Questo ha funzionato anche per me, ma cosa succede se si desidera convalidare l'unicità' a meno che: -> {home_team.nil? } ', come lo verificheresti? – Caleb