【发布时间】:2015-12-21 21:06:03
【问题描述】:
我有一些看起来与此类似的代码:
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可能会更好。 -
这是在类方法中使用的。它用于从数据库中获取任何存在的规则并将这些规则应用于 sql 查询。
标签: ruby-on-rails ruby syntax rescue