2012-04-26 18 views
9

Mam niestandardowy weryfikator i próbuję wysłać komunikat o błędzie, gdy się nie powiedzie, ale nie można tego zrobić. Czy ktoś mógłby mi powiedzieć, czy robię to we właściwym miejscu.Dodawanie komunikatu o błędzie do niestandardowego weryfikatora

class User < ActiveRecord::Base 
    self.table_name = "user" 

    attr_accessible :name, :ip, :printer_port, :scanner_port 

    validates :name,  :presence => true, 
          :length => { :maximum => 75 }, 
          :uniqueness => true       

    validates :ip,   :length => { :maximum => 75 }, 
          :allow_nil => true  

    validates :printer_port, :presence => true, :if => :has_association? 

    validates :scanner_port, :presence => true, :if => :has_association?   

    def has_association? 
    ip != nil 
    end 
end 

miałem go w następujący sposób:

validates :printer_port, :presence => true, :message => "can't be blank", :if => :has_wfm_association? 

Ale otrzymywał błąd

Unknown validator: 'MessageValidator' 

A kiedy próbowałem umieścić wiadomość na koniec walidatora przecinek rozdzielając has_association? Okazało się znak zapytania i przecinek pomarańczowo

Odpowiedz

17

message i if parametry powinny być wewnątrz hash dla presence:

validates :printer_port, :presence => {:message => "can't be blank", :if => :has_wfm_association?} 

To dlatego można załadować wiele walidacji w jednym wierszu:

validates :foo, :presence => true, :uniqueness => true 

Jeśli próbowałeś dodać wiadomość do tego w taki sposób, lub pod warunkiem, if warunek, Rails nie wiedział, co sprawdzania poprawności, aby zastosować wiadomość/warunkowe. Zamiast tego musisz ustawić komunikat dla sprawdzania poprawności:

validates :foo, :presence => {:message => "must be present"}, 
       :uniqueness => {:message => "must be unique"} 
+0

Czy nie muszę podawać prawdziwego oświadczenia w obecności? Kiedy to robię? a koniec hasha biegnie razem i obie zmieniają kolor na pomarańczowy. – Jay

+0

Po prostu trzeba umieścić miejsce, dzięki za pomoc Dylan bardzo doceniane :) – Jay

+0

Jak mogę zaakceptować? – Jay

Powiązane problemy