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

Разница между save (false) и save (: validate => false)

В чем разница между save(false) и save(:validate => false)? Из того, что я могу сказать, функциональность такая же. Версия, использующая :validate, находится в api, что заставляет меня думать, что save(false) - устаревшая версия? Это пришло мне в голову, следуя этому: https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user. В руководстве есть save(false), но при использовании я получал ошибки. Я переключил его на версию :validate, и это сработало нормально.

4b9b3361

Ответ 1

В версиях Rails до 3, save был методом в ActiveRecord::Base, и вы могли передать ему false в порядке для обхода проверок.

В Rails 3, save был перенесен на ActiveRecord::Persistance, и с этого момента вы должны пройти :validate => false до save, чтобы для обхода проверок.

Ответ 2

Вся валидация с модели пропускается, когда мы используем validate: false

@user = User.new(....)

@user.save(validate: false)

Действие базы отключить проверку

http://www.dan-manges.com/blog/action-dependent-validations-and-why-on-update-is-bad

Пропустить проверку поля

https://richonrails.com/articles/skipping-validations-in-ruby-on-rails

Пример

class User < ActiveRecord:: Base

validates_presence_of: password,: on = > : update

конец