一般来说,save
使用ActiveRecord时是否应该检查always的返回值?
例如,我遇到了一些这样的代码:
def foo(active_record_instance)
active_record_instance.field_1 = 'a'
active_record_instance.field_2 = 'b'
# ...15 more lines...
active_record_instance.save # <==
baz = bar(active_record_instance.id)
# ...15 more lines that use baz...
baz
end
def bar(id)
instance = ActiveRecordSubclass.find(id)
instance.field_3 = instance.field_1 + instance.field_2
instance
end
这有点做作,但对于我正在处理的代码库来说,这是一个相当现实的例子。(这不是这种模式的孤立案例。)
鉴于对的验证ActiveRecordSubclass
在不断变化,并且在不久的将来(甚至一年后)可能会发生变化,我的想法是active_record_instance.save
应该检查的返回值。另一种选择是使用active_record_instance.save!
.
检查记录是否保存是否合适?或者foo
考虑到当前的验证没有失败,该方法是否对某些不应该关注的事情进行微观管理?