Выполнение пользовательской проверки до создания записи?

Я хочу выполнить пользовательскую проверку до создания записи?

Похоже, что это правильный метод: before_validation_on_create. Например:

before_validation_on_create :custom_validation

Но я не уверен. Любая помощь будет оценена.

Ответы

Ответ 1

before_validation_on_create перехватывают до проверки на создание... но они сами не являются валидациями.

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

class IceCreamCone

  validate :ensure_ice_cream_is_not_melted, :before => :create

  private
    def ensure_ice_cream_is_not_melted
      if ice_cream.melted?
        errors.add(:ice_cream, 'is melted.')
      end
    end
  end

Ответ 2

В рельсах 3

before_validation_on_create :do_something

был заменен на:

before_validation :do_something, :on => :create

Ответ 3

В Rails 5 работало для меня:

validate :custom_validation_method, :on => :create

Запуск

validate :custom_validation_method, :before => :create

дал мне следующую ошибку:

Unknown key: :before. Valid keys are: :on, :if, :unless, :prepend.