Выполнение пользовательской проверки перед созданием записи? - PullRequest
15 голосов
/ 20 июня 2010

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

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

before_validation_on_create :custom_validation

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

Ответы [ 4 ]

32 голосов
/ 28 июня 2012

в рельсах 3

before_validation_on_create :do_something

заменено на:

before_validation :do_something, :on => :create
19 голосов
/ 20 июня 2010

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
7 голосов
/ 24 февраля 2017

В Rails 5 у меня сработало следующее:

validate :custom_validation_method, :on => :create

Запуск

validate :custom_validation_method, :before => :create

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

Unknown key: :before. Valid keys are: :on, :if, :unless, :prepend.
1 голос
/ 20 июня 2010

Здесь есть большой ресурс для получения информации о обратных вызовах и порядке их выполнения:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...