Ich habe ein Modell mit einem serialisierten Attribut (Array). Ich möchte das Modell nur dann validieren, wenn jedes Element des Arrays in den vorgegebenen Optionen enthalten ist.Wie führe ich eine Inklusionsvalidierung für ein serialisiertes Attribut durch?
Beispiel: Ich habe ein Personenmodell, das ein Attribut "Stimmung" hat. Benutzer können mehr als eine Stimmung haben, aber jede Stimmung muss entweder "glücklich", "traurig", "müde" oder "wütend" sein.
Das Modell wäre so etwas wie dieses:
class Person < ActiveRecord::Base
MOODS = %w[happy sad tired angry]
# validates :inclusion => { :in => MOODS }
attr_accessible :mood
serialize :mood
end
Die kommentierte Validierung nicht funktioniert. Gibt es eine Möglichkeit, es funktioniert oder brauche ich eine benutzerdefinierte Validierung?
(. Hinweis: Ich habe keine separates Mood Modell erstellen mag)
Prüfen Sie diese Dokumentation, http://guides.rubyonrails.org/active_record_validations_callbacks.html#inclusion. Sie müssen keine benutzerdefinierten Validierungen dafür erstellen. – Chamnap
auf serialisierten Attributen, Sie tun, sonst wird der serialisierte Wert für die Einbeziehung überprüft, was bedeutet, dass Stimmung = [müde, wütend] wird fehlschlagen, da MOODS.include? (Stimmung) ist falsch –
Ah, ich habe nicht serialize-Methode zu sehen. Ihre Antwort sollte dann stimmen. – Chamnap