我有一些代碼,看起來與此類似:紅寶石救援和最佳實踐語法
foo = SomeActiveRecordModel.where(bar: 10).first.foo rescue ''
一旦我開始使用Rubocop它是在我喊救援語法那裏。所以我想還有其他至少有兩種方法來寫這個代碼它們是:
foo =
begin
foo = SomeActiveRecordModel.where(bar: 10).first.foo
rescue NoMethodError
''
end
和:
foo = SomeActiveRecordModel.where(bar: 10).first
foo.present? ? foo.foo : ''
以下哪種方式將是首選,或者是有沒有最好的替代方法?
出於好奇,你在哪裏使用它?我看到所有三個答案都是非常出色的。但是如果你在一個控制器中使用它,可能會把'where'方法調用移動到'SomeActiveRecordModel'中的'scope'或'class method'可能更好。 – vee
這是在類方法中使用的。它被用來獲取數據庫中存在的任何規則,並將這些規則應用於sql查詢。 – CarlyL