2016-06-10 3 views
0

Ich verwende Rails 4.2.3. Ich habe drei Felder in meinem Modell - name, first_name und last_name. Ich möchte eine Validierungsregel in meinem Modell haben, die einen Fehler beim Speichern verursacht, wenn das Feld "Name" leer ist, es sei denn, das Feld Vorname oder Nachname ist nicht leer. SOoI versuchteWie führt man die Validierung von Schienenmodellen mit oder ohne Bedingung durch?

validates_presence_of :name, :unless => !:first_name.empty? or !:last_name.empty? 

aber das funktioniert nicht. Ich bekomme den Fehler unter

undefined method `validate' for true:TrueClass 

Was ist der richtige Weg, um die Gültigkeitsprüfung Regel oben schreiben?

Antwort

1

Alles, was Sie wissen müssen, ist here.

Sie können die Regel schreiben, indem eine separate Methode für sie zu definieren:

class Whatever < ActiveRecord::Base 
    validates :name, presence: true, unless: :firstname_or_surname? 

    def firstname_or_surname? 
    firstname.present? || surname.present? 
    end 
end 

Oder Sie können einen Proc verwenden, sie definieren inline:

class Whatever < ActiveRecord::Base 
    validates :name, presence: true, 
    unless: Proc.new { |a| a.firstname.present? || a.surname.present? } 
end 
Verwandte Themen