Как проверить валидации, которые существуют в ActiveRecord :: Base Objects - PullRequest
4 голосов
/ 17 ноября 2010

Я хочу создать вспомогательный метод для автоматического вывода text_fields с атрибутом: maxlength.Я хочу, чтобы эта максимальная длина была установлена ​​на основе: max, указанного в атрибутах поля validates_length validation, чтобы он оставался СУХИМЫМ.

Мой вопрос: есть ли хороший способ проверить проверки, которые присутствуют наатрибуты объектов, а затем извлечь максимальную длину из этой проверки.

Я также планирую извлечь другие вещи, такие как регулярное выражение из validates_format, чтобы я мог установить атрибут в поле text_, который затем может быть использован js для запускапроверки на стороне клиента.

Спасибо.

Бонусные баллы: Почему Rails автоматически не добавляет нам максимальную длину в текстовые поля?

Ответы [ 2 ]

9 голосов
/ 17 ноября 2010

В Rails 3 вы можете вызвать метод _validators для объекта, чтобы получить список валидаторов, которые будут запускаться:

t = Ticket.new
t._validators
2 голосов
/ 17 ноября 2010

Ну, я не знаю, хороший ли это способ, но вы можете инициализировать новый объект, вызвать #valid?и затем вызвать #errors, чтобы получить хэш атрибутов и сообщений об ошибках.Тогда вам придется анализировать эти сообщения об ошибках.

user = User.new
user.valid?
errors_hash = user.errors
...