Как проверить внешнее поле формы в форме Ruby on Rails (например, капчу)? - PullRequest
2 голосов
/ 26 марта 2009

У меня есть форма регистрации пользователя, и я хотел написать «капчу», обнаружившую человека, в мой метод регистрации. Я решил создать простой математический вопрос, на который пользователи будут отвечать (это должно работать в моих целях).

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

def validate
  errors.add(:humanproof, "is not the right answer") if humanproof != 4
end

Однако, поскольку: Humanproof не является частью пользовательской модели, переменная "Humanproof" там недоступна.

Как лучше всего получить доступ к безопасной для человека переменной?

1 Ответ

4 голосов
/ 26 марта 2009

Что вы можете сделать, это добавить виртуальный атрибут. Проверьте это скринкаст от RailsCasts.

По сути, вы хотите добавить атрибут в ваш класс. Поскольку вам не нужно выполнять какую-либо логику, вы можете просто использовать встроенные переменные экземпляра формы метода Ruby.

 class Foo < ActiveRecord::Base
   attr_accessor :humanproof

   def validate
     errors.add(:humanproof, "is not the right answer") if humanproof != 4
   end

Это добавляет к вашему классу атрибут, который не сохраняется в базе данных и прикрепляется к объекту на время запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...