所以我知道bang(感叹号)和non-bang方法之间的区别通常是该方法是修改对象本身还是返回一个单独的修改对象,保持原始对象不变.
然后,在本书第6章构建用户模型时,我遇到了User.create
方法,它创建了一个新模型,并在一个步骤中将其保存到数据库中.在迈克尔·哈特尔(Michael Hartl)的Ruby on Rails 3 Tutorial中,他写道User.create!
方法"与create
方法一样工作……只是如果创建失败,它会引发ActiveRecord::Record-Invalid异常."
我很困惑.是User.create!
方法没有遵循Ruby的"bang约定"还是我完全遗漏了什么?如果他遵循惯例,如果是类方法,User.create!
如何修改self?