Frage

In Rails 2.x Sie Validierungen verwenden können, um sicherzustellen, dass Sie einen einzigartigen kombinierten Wert wie folgt aus:

validates_uniqueness_of :husband, :scope => :wife

In der entsprechenden Migration könnte es so aussehen:

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

Dies würde sicherstellen, dass die Mann / Frau-Kombination in der Datenbank eindeutig ist. Nun, in Rails 3 die Validierung Syntax geändert, und das Attribut scope scheint verschwunden zu sein. Es sieht nun so:

validates :husband, :presence => true

Jede Idee, wie ich die kombinierte Validierung in Rails erreichen kann 3? Die Schienen 2.x Validierungen noch Arbeit in Rails 3 so dass ich immer noch das erste Beispiel verwenden kann, aber es sieht so „alt“, gibt es bessere Möglichkeiten?

War es hilfreich?

Lösung

Bär mit mir. Die Art und Weise das Verfahren validates in ActiveModel funktioniert, ist zu sehen für einen Validator.

:presence => true sieht für PresenceValidator und übergibt die Optionen. true auf die initializer der Validator

Ich glaube, Sie wollen

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

(Die Einzigartigkeit Validator ist eigentlich ein Teil von Active, nicht ActiveModel. Es ist wirklich interessant, wie die Entwickler setzen Sie diesen auf. Es ist sehr elegant.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top