Я хочу выполнить пользовательскую проверку перед созданием записи?
Похоже, что это правильный метод: before_validation_on_create. Например:
before_validation_on_create :custom_validation
Но я не уверен. Любая помощь будет оценена.
в рельсах 3
before_validation_on_create :do_something
заменено на:
before_validation :do_something, :on => :create
before_validation_on_create перехватывает произойти перед проверкой при создании ... но они сами не являются проверками.
Что вы, вероятно, хотите сделать, это использовать validate и закрытый метод, который добавляет к массиву ошибок. как это:
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
В Rails 5 у меня сработало следующее:
validate :custom_validation_method, :on => :create
Запуск
validate :custom_validation_method, :before => :create
дал мне следующую ошибку:
Unknown key: :before. Valid keys are: :on, :if, :unless, :prepend.
Здесь есть большой ресурс для получения информации о обратных вызовах и порядке их выполнения:
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html