我有一些代码,看起来与此类似:红宝石救援和最佳实践语法
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