提供记录之前更新记录的惯用方式

时间:2019-09-17 15:46:49

标签: ruby-on-rails ruby refactoring

我正在开发一个RoR应用程序,当它在GET / resource上回答时,需要尝试更新所有资源,并从外部服务中获取数据。 为了使事情更清楚,伪代码为:

def show
  resource = find_resource
  call_external(resource: resource)
  resource = find_resource
  render
end

现在,这可行,但是我真的不喜欢双重发现。绝对合法,因为技术规范实际上就是获取资源,使用其属性定义要更新的资源的从到范围(可能包含当前资源),然后再次获取资源,仍然非常丑陋。

关于如何重构它的任何建议?非常感谢

1 个答案:

答案 0 :(得分:0)

您可以使用reload方法来更新AR对象

def show
  resource = find_resource
  call_external(resource: resource)
  resource.reload
  render
end