Выполнение пользовательской проверки до создания записи?
Я хочу выполнить пользовательскую проверку до создания записи?
Похоже, что это правильный метод: 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.
Ответ 4
Здесь есть большой ресурс для информации о обратных вызовах и порядке, в котором они происходят:
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html