2016-06-23 28 views
0

Ich habe ein Modell StudentProductRelationship. Ich füge einen benutzerdefinierten ValidatorWann wird die Validierungsmethode in Rails aufgerufen?

validate :validate_primary_product , :if => "!primary_product"

Das Verfahren ist

def validate_primary_tag 
    unless StudentProductRelationship.exists?(:primary_product => true, :student_id => student_id) 
    errors.add(:base,"There is no primary product associated to product") 
    else 
    end 
end 

primary_product ist ein boolean Feld. Ich möchte das Vorhandensein von mindestens einem echten primary_product für student_id validieren. Das Problem ist, wenn ich ein StudentProductRelationship Objekt habe sagen spr mit primary_product = true. Wenn ich spr.update_attributes(primary_product: false) mache. Die Validierung führt nicht zu einem Fehler, da StudentProductRelationship.exists?(:primary_product => true, :student_id => student_id) existiert, weil spr noch in db mit primary_product = true existiert. Wie übertreffe ich das?

Antwort

0

Funktioniert nicht validates_presence_of :primary_product, scope: :student_id für Sie?

+0

Nein. Nicht Präsenz Ich brauche es, um wahr zu sein. Das würde auch 'false' behandeln oder? – Codernx123

Verwandte Themen