Как мне получить список проверок, определенных в модели
Пример:
class ModelName validates_presence_of :field_name validates_inclusion_of :sex, :in => %w(M F) end
Мне нужен хэш, как:
{:field_name => 'required', :sex => 'Must be in: M, F'}
Вам не нужен плагин для основных нужд.
Вы можете сделать это, чтобы получить хэш всех валидаторов.
ModelName.validators
Если вы хотите получить валидаторы дляконкретное поле:
ModelName.validators_on(:attribute)
Этот код выдает массив обязательных полей. Он должен быть адаптирован к вашим потребностям.
@required_fields = [] ModelName.validators.each do |v| @required_fields << v.attributes.first if v.kind == :presence end
Если вы динамически добавляете проверки в свои модели, вы можете использовать экземпляр для вывода списка проверок:
product = Product.new product.singleton_class.validators_on(:price) #=> [#<ActiveModel::Validations::PresenceValidaton>]
Протестировано в Rails 5.2.
Похоже, что нет никакого собственного способа сделать это, но быстрый Google (для "рельсы отражают проверки") обнаруживает этот плагин .