一般來說,在使用ActiveRecord時總是應該檢查返回值save
?使用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
方法微觀的東西,不應該關注,因爲目前的驗證不會失敗?
澄清:我的問題是更多關於是否異常或檢查返回值是否應* *完成。我的一位同事說忽略記錄是否保存。 – 2012-08-09 22:26:29