Ich habe ein Modell Listing
, dass belongs_to :user
. Alternativ User
has_many :listings
. Jeder Eintrag hat ein Kategoriefeld, das es klassifiziert (Hunde, Katzen, usw.). Die User
hat auch ein boolesches Feld namens is_premium
.Hinzufügen eines Validierungsfehlers mit einem before_save-Callback oder einem benutzerdefinierten Validator?
Hier ist, wie ich die Kategorie bin Validierung ...
validates_format_of :category,
:with => /(dogs|cats|birds|tigers|lions|rhinos)/,
:message => 'is incorrect'
Sagen wir, ich möchte nur Premium-Benutzern zu ermöglichen, der Lage sein, Tiger hinzufügen, Löwen und Nashörner. Wie würde ich darüber gehen? Wäre es am besten, es in einer before_save
Methode zu machen?
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 schätze, Sie sollten lieber einen benutzerdefinierten Validator verwenden. –