Подтвердить что ты не робот

Rails 2.3.11 - Проверить только на Create

Я пытаюсь настроить свою пользовательскую проверку на create. Но когда я делаю find, а затем save, рельсы рассматривают его как create и запускают пользовательскую проверку. Как заставить проверки работать только при создании новой записи, а не при обновлении найденной записи?

4b9b3361

Ответ 1

Заголовок вопроса указывает рельсы 2.3.11, но ваш тэг показывает рельсы 3.1. Я беру название, чтобы быть реальной версией, в которой вы нуждаетесь.

попробуйте это на вашей строке кода проверки:

validate :custom_validation, :on => :create

это указывает только на запуск проверки в действии create. Здесь ссылка на apidocs

Ответ 2

TL; DR; Полный пример:

class MyPerson < ActiveRecord::Base
  validate :age_requirement


  private

  def age_requirement
    unless self.age > 21 
      errors.add(:age, "must be at least 10 characters in length")
    end
  end

end

Чтобы запустить валидатор только при создании нового объекта, вы можете изменить вторую строку примера на: validate :age_requirement, on: :create

Только обновления: validate :age_requirement, on: :update

Надеюсь, что это поможет следующему человеку!