【发布时间】:2012-08-09 21:37:12
【问题描述】:
一般情况下,使用 ActiveRecord 时是否应该始终检查 save 的返回值?
例如,我遇到过这样的代码:
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 方法是否微管理了一些不应该成为其关注点的事情?
【问题讨论】:
标签: ruby activerecord coding-style