Rails - Предотвращение участия пользователей в веб-сайте, когда их оценка слишком низкая - обратный вызов / лучшие практики наблюдателей и т. Д. - PullRequest
0 голосов
/ 01 июня 2010

A Пользователь может добавить Предложение прямо на моем сайте, через Twitter или по электронной почте. Чтобы добавить предложение, они должны иметь минимальный балл. Если у них нет минимальной оценки, они не могут опубликовать предложение, и на веб-сайте высвечивается предупреждающее сообщение, которое отправляется обратно через Twitter или по электронной почте.

Так что мне интересно, как лучше кодировать эту проверку. Я думаю о предложении наблюдателя. До сих пор мои мысли в до_создании

score_sufficient ()

  • оценка ок => сохранить
  • оценка слишком низкая => не сохранять

В случае слишком низкого уровня мне нужно вернуть какой-нибудь флаг, чтобы вызывающий код мог затем активировать соответствующее предупреждение.

Какой тип флага я должен вернуть? Ложь слишком двусмысленна, поскольку это может относиться к валидации. Я мог бы выдвинуть исключение, но это не звучит правильно, или я мог бы вернуть символ? Это даже правильный подход?

Какой лучший способ кодировать это?

1 Ответ

1 голос
/ 01 июня 2010

Нет необходимости в наблюдателе, просто используйте фильтр 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...