鉴于update_attribute
会改变对象并保存到数据库,为什么它没有以爆炸命名?我唯一的猜测是,触及数据库的方法往往会被命名,如果它们在失败时引发异常而不是仅返回错误,但我不确定是什么驱动了命名方案。< / p>
答案 0 :(得分:1)
正如@Brad Werth所说,Ruby意味着最后一个!
的方法应该有另一个类似命名的方法,最后没有!
。带!
的版本应该是危险版本。如果你的方法最后只有一个!
而不是非爆炸对应的方法那么这就是所谓的prima-donna方法,并且是一种代码气味。例如,请参阅:https://github.com/troessner/reek/wiki/Prima-Donna-Method。
update_attribute
最后没有!
的原因与它是否改变数据库中的数据或是否引发异常无关。这只是因为数据库中的数据变异是update_attribute
方法的正常函数。没有爆炸性的对应物,因为它没有“危险”版本。 !
引发异常的约定在当时是任意的,但对ActiveRecird如何使用save!
有意义。但这不会使!
=“引发异常”规则。