Hinzufügen eines Fehlers mit before_save-callback-oder benutzerdefinierten validator?
Habe ich ein Modell Listing
dass belongs_to :user
. Alternativ User
has_many :listings
. Jede Liste hat ein Feld Kategorie, klassifiziert es (Hunde, Katzen, etc). Die User
hat auch ein boolean Feld mit dem Namen is_premium
.
Hier ist, wie ich bin Validierung der Kategorie...
validates_format_of :category,
:with => /(dogs|cats|birds|tigers|lions|rhinos)/,
:message => 'is incorrect'
Sagen wir mal ich will nur zulassen premium Benutzer in der Lage sein, um hinzuzufügen Tiger, Löwen, und Nashörner. Wie würde ich das angehen? Wäre es am besten, es zu tun in einer before_save
Methode?
before_save :premium_check
def premium_check
# Some type of logic here to see if category is tiger, lion, or rhino.
# If it is, then check if the user is premium. If it's not, it doesn't matter.
# If user isn't premium then add an error message.
end
Vielen Dank im Voraus!
Nein, es wird nicht funktionieren. Ich denke, man sollte eher die benutzerdefinierte validator-statt.
InformationsquelleAutor gbdev | 2013-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
&&
"?ja. Antwort geändert
Ah ha!!! Genial. Vielen Dank für Ihre Hilfe!
InformationsquelleAutor usha
Wenn Sie hinzufügen möchten, Validierungs-Fehler, die während der before_save könnten Sie eine Ausnahme auslösen, dann fügen Sie die Fehler in der Steuerung wie diese:
Dann in deinem controller etwas zu tun:
Dann in /lib-Ordner fügen Sie eine Klasse wie folgt aus:
Aber in deinem Fall denke ich, dass mit Hilfe der validate-Methode ist eine bessere Lösung.
Cheers,
InformationsquelleAutor Eric
Können Sie
validates_exclusion_of
:InformationsquelleAutor kristinalim