2010-06-01 3 views
0

Un utilisateur peut ajouter une phrase directement sur mon site, via Twitter ou par courriel. Pour ajouter une phrase, ils doivent avoir un score minimum. S'ils n'ont pas le score minimum, ils ne peuvent pas poster la phrase et un message d'avertissement est soit flashé sur le site, soit renvoyé à eux via Twitter ou par e-mail. Donc, je me demande comment mieux coder cette vérification. Im pensant un observateur de la phrase. Jusqu'à présent, mes pensées sont before_createRails - Empêcher les utilisateurs de contribuer au site Web lorsque leur score est trop faible - rappel/observateur meilleures pratiques etc

score_sufficient()

  • le score => save
  • Le score trop bas => ne pas enregistrer

Dans le cas de trop faible j'ai besoin renvoyer un drapeau pour que le code appelant puisse alors déclencher l'avertissement approprié.

Quel type de drapeau devrais-je retourner? Faux est trop ambigu car cela pourrait se référer à la validation. Je pourrais lever une exception mais cela ne semble pas correct ou je pourrais retourner un symbole? Est-ce la même approche?

Quelle est la meilleure façon de le coder?

Répondre

1

Pas besoin d'un observateur, il suffit d'utiliser un filtre before_create.

class Sentence < ActiveRecord::Base 
    before_create :check_score 
    def check_score 
    errors.add_to_base("Score too low") unless score >= 50 
    end 
end