Rails 3 Validierung :Präsenz => false

Hier ist, was ich erwartet habe ein ganz einfache Frage, aber ich kann nicht finden eine definitive Antwort in den Guides oder anderswo.

Habe ich zwei Attribute, die auf ein ActiveRecord. Ich will genau ein, anwesend zu sein und die anderen zu null oder eine leere Zeichenfolge.

Wie mache ich das äquivalent von :Präsenz => false? Ich möchte sicherstellen, dass der Wert null.

validates :first_attribute, :presence => true, :if => "second_attribute.blank?"
validates :second_attribute, :presence => true, :if => "first_attribute.blank?"
# The two lines below fail because 'false' is an invalid option
validates :first_attribute, :presence => false, :if => "!second_attribute.blank?"
validates :second_attribute, :presence => false, :if => "!first_attribute.blank?"

Oder vielleicht gibt es eine elegantere Möglichkeit dies zu tun...

Ich bin mit Rails 3.0.9

  • Ich bin mir nicht sicher, Sie brauchen :Präsenz => false an alle in den letzten zwei Zeilen code.
  • Es muss ein test von einigen Sortieren. Wenn ich loswerden :Präsenz-Validierung, die es mich gibt: C:/Ruby192/lib/ruby/gems/1.9.1/gems/activemodel-3. 0.9/lib/active_model/Validierungen/validiert.rb:79:in `überprüft': Zuleitung benötigt Man mindestens eine Validierung (ArgumentError)
  • Erwähnenswert für Rails 4, dass dies heißt validates_absence_of.
InformationsquelleAutor LikeMaBell | 2012-04-09
Schreibe einen Kommentar