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