gpt4 book ai didi

ruby - Rails——创造再创造!方法,RoR 3 教程

转载 作者:数据小太阳 更新时间:2023-10-29 06:23:38 24 4
gpt4 key购买 nike

所以我知道 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

关于ruby - Rails——创造再创造!方法,RoR 3 教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6316821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com