Domanda

In Rails 2.x è possibile utilizzare le convalide per assicurarsi di avere un valore combinato unico come questo:

validates_uniqueness_of :husband, :scope => :wife

Nella migrazione corrispondente che potrebbe assomigliare a questo:

add_index :family, [:husband, :wife], :unique => true

Ciò assicurarsi che la combinazione marito / moglie è univoco nel database. Ora, in Rails 3 la sintassi convalida cambiato e l'attributo scope sembra essere andato. Ora sembra:

validates :husband, :presence => true

Qualsiasi idea di come posso ottenere la validazione combinata in Rails 3? The Rails convalide 2.x lavorano ancora in Rails 3 in modo da poter ancora utilizzare il primo esempio, ma sembra così "vecchio", ci sono modi migliori?

È stato utile?

Soluzione

Orso con me. Il modo in cui il metodo Convalida in ActiveModel funziona è quello di cercare un Validator.

:presence => true cerca PresenceValidator e passa le opzioni:. true alla inizializzazione del validatore

Penso che si desidera

validates :husband, :presence => true, :uniqueness => {:scope => :wife}

(Il validatore unicità è in realtà parte di ActiveRecord, non ActiveModel. E 'davvero interessante come gli sviluppatori impostare questa funzione. E' abbastanza elegante.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top