Подключить validates_exclusion_of плохих слов к отдельному файлу? - PullRequest
3 голосов
/ 13 декабря 2010

Я строю длинный список терминов, которые я бы хотел запретить ввод в поле с помощью validates_exclusion_of. Этот список становится очень длинным, и некоторые термины в нем могут быть неуместными / оскорбительными / отвлекающими / вызывающими проволочек для других программистов. Есть ли способ подключить следующий код к отдельному текстовому документу, хранящемуся где-то в моем репо?

validates_exclusion_of :path, :in => %w( long list of bad words ... ), :message => "This is a protected word. Please try another."

Бонус: это сообщение не отображается в моей форме, когда пользователь вводит одно из этих условий. Как мне получить сообщение для отображения?

Ответы [ 2 ]

5 голосов
/ 13 декабря 2010

вам не нужно использовать validates_exclusion_, вы можете просто определить свой собственный validate

validate :check_bad_words

def check_bad_words
  @bad_words ||= File.read('badwords.txt').split
  errors.add_to_base("#{path} is a protected word. Please try another.") if @bad_words.include? path
end

чтобы ваше сообщение об ошибке отображалось в форме, в старых версиях это
<% = f.error_messages%>, где f - это форма

для rails 3.x я думаю, что вы должны сделать это самостоятельно согласно f.error_messages в Rails 3.0

0 голосов
/ 13 декабря 2010

Чтобы отобразить нужное вам сообщение в форме, наподобие этого (пример хамла)

- if @object.errors.any?
  #error_explanation= error_messages_for :object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...