Другой (извилистый) вариант - использовать условный модификатор при установке проверки:
validates_presence_of :name, :unless => :skip_name_validation?
def skip_name_validation?
@skip_name_validation
end
def skip_name_validation!
@skip_name_validation = true
end
def save_without_name_validation
skip_name_validation!
save
end
, затем в вашем контроллере:
@object.save_without_name_validation
Я считаю это несколько более явным.Бонусные методы:
def without_name_validation!
tap {|record| record.skip_name_validation! }
end
# on a relation :
def self.without_name_validation!
map( &:skip_name_validation! )
end
# in a controller
@object.without_name_validation!.save
@objects.without_name_validation!.each do # something
Однако я признаю, что другое решение более элегантно.