2016-04-14 9 views
1

Ich versuche, benutzerdefinierte Validierung zu lernen. Unten ist der einfache Code:Ruby on Rails - benutzerdefinierte Validierung erlaubt funktioniert nicht

class User < ActiveRecord::Base 
    validates :username, presence: true,length: { in: 6..20 } 
    validate :name_cannot_be_tushar 

    def name_cannot_be_tushar 
    if username == "Tushar" 
     errors.add(:username, "can't be Tushar") 
    end 
    end 
end 

Wenn ich Daten über Schienen-Konsole einfügen versuchen

2.3.0: 014> User.create (Benutzername: "Tushar", Passwort: "ABC ") (0.1ms) beginne die Transaktion SQL (0.4ms) INSERT INTO" Benutzer "(" Benutzername "," Passwort "," erstellt_at "," aktualisiert_at ") WERTE (?,?,?,?) [[" Benutzername "," Tushar "], [" Passwort "," ABC "], [" erstellt_at "," 2016-04-14 09: 23: 14.077264 "], [" updated_at "," 2016-04-14 09: 23: 14.077264 "]] (12.9ms) Commit-Transaktion => # 2.3.0: 015>

Es lässt mich die Daten einfügen. Was ändere ich, damit meine benutzerdefinierte Validierungsmethode funktioniert?

+0

Welche Version von Rails verwenden Sie? –

Antwort

3

Ihr Code ist absolut in Ordnung. Möglicherweise müssen Sie rails console neu starten, und es wird gut funktionieren. Die Rails-Konsolensitzung lädt nicht automatisch die letzten Änderungen in Ihrem Modell.

+0

Ich würde nur die Validierungsmethode 'private' machen und es eine boolean zurückgeben. – tompave