Итак, я знаю, что различие между методами взрыва (восклицательный знак) и методами без взрыва обычно заключается в том, будет ли метод изменять сам объект или возвращать отдельный измененный объект, сохраняя оригинал неизменным.
Затем при построении модели User в главе 6 книги я наткнулся на метод User.create
, который создает новую модель и сохраняет ее в базе данных за один шаг. В Ruby on Rails 3 Tutorial Майкл Хартл пишет, что метод User.create!
"работает точно так же, как метод create
... за исключением того, что он вызывает ActiveRecord::Record-Invalid. исключение, если создание не удается».
Я довольно смущен. Является ли метод User.create!
не следующим Ruby "конвенцией взрыва" или я полностью что-то упускаю? И если он следует соглашению, как User.create!
изменяет себя, если это метод класса?