получить подтверждение от модели - PullRequest
39 голосов
/ 29 октября 2010

Как мне получить список проверок, определенных в модели

Пример:

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'}

Ответы [ 4 ]

86 голосов
/ 29 октября 2010

Вам не нужен плагин для основных нужд.

Вы можете сделать это, чтобы получить хэш всех валидаторов.

ModelName.validators

Если вы хотите получить валидаторы дляконкретное поле:

ModelName.validators_on(:attribute)
1 голос
/ 17 декабря 2018

Этот код выдает массив обязательных полей. Он должен быть адаптирован к вашим потребностям.

@required_fields = []
  ModelName.validators.each do |v|
  @required_fields << v.attributes.first if v.kind == :presence
end
0 голосов
/ 07 ноября 2018

Если вы динамически добавляете проверки в свои модели, вы можете использовать экземпляр для вывода списка проверок:

product = Product.new
product.singleton_class.validators_on(:price)
#=> [#<ActiveModel::Validations::PresenceValidaton>]

Протестировано в Rails 5.2.

0 голосов
/ 29 октября 2010

Похоже, что нет никакого собственного способа сделать это, но быстрый Google (для "рельсы отражают проверки") обнаруживает этот плагин .

...