ruby – Rails – 创建和创建!方法,RoR 3教程

所以我知道bang(感叹号)和非bang方法之间的区别通常是该方法是否将修改对象本身或返回一个单独的修改对象保持原来不变。

然后在本书第6章中构建User模型时,我遇到了User.create方法,它创建了一个新模型,并通过一个步骤将其保存到数据库中。在Michael Hartl的Ruby on Rails 3教程中,他写道,User.create!方法“的工作原理就像create方法…除了它引发一个ActiveRecord :: Record-Invalid异常如果创建失败。

我很困惑。是User.create!方法不遵循Ruby“bang-convention”或者我完全错过了什么?如果他遵循惯例,User.create如何?如果是类方法,修改self?

虽然很多类将bang方法当作“一种修改对象的方法”,我喜欢从Eloquent Ruby book的bang方法的描述更好:

In practice, Ruby programmers reserve
! to adorn the names of methods that do
something unexpected, or perhaps a bit
dangerous

所以在这种情况下,“意外”的结果是引发异常,而不是只是失败和返回false。

http://stackoverflow.com/questions/6316821/rails-create-and-create-methods-ror-3-tutorial

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby – Rails – 创建和创建!方法,RoR 3教程