Я пытаюсь настроить свою пользовательскую проверку на create
. Но когда я делаю find
, а затем save
, рельсы рассматривают его как create
и запускают пользовательскую проверку. Как заставить проверки работать только при создании новой записи, а не при обновлении найденной записи?
Rails 2.3.11 - Проверить только на Create
Ответ 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
Надеюсь, что это поможет следующему человеку!