Извлечение имен полей для проверки

#ruby-on-rails #ruby #ruby-on-rails-3 #validation

#ruby-on-rails #ruby #ruby-on-rails-3 #проверка

Вопрос:

Я использую Ruby on Rails 3, и я хотел бы получить имена полей для проверки. То есть я определил некоторую проверку для класса, и я хотел бы получить, какие поля (их имена) являются кандидатами для проверки при отправке формы.

Мне это нужно, потому что я хотел бы «поиграть» с атрибутами ошибки класса ( <name_class>.errors ).

Как я могу сделать?

Ответ №1:

Вы можете получить доступ к validators методу вашей модели. Это вернет массив средств проверки в вашей модели.

Например, если у вас было это:

 class User < ActiveRecord::Base
  validates :name, :presence => true
  validates :email, :uniqueness => true
end
  

Затем вы могли бы получить доступ к средствам проверки следующим образом:

 User.validators
# => [#<ActiveModel::Validations::PresenceValidator:0x123456 @attributes=[:name], @options={}>....]
User.validators.first.attributes
# => [:name]
User.validators.first.class
# => ActiveModel::Validations::PresenceValidator