返回保存! DRY 代码后的值

Returning save! value after code with DRY

您好,我正在尝试编写功能上等同于的代码:

def model_method(args)
  ...
  obj.save!
  ... void code assuming save! worked ...
  return obj.save!
end

通常我会使用 after_save 回调,但是有参数传递到该模型的方法中,我需要将其用于 ...code... snipit。

关于如何使用 DRY 执行此操作的任何想法?

我希望像 obj.save!.tap { ... } 这样的东西能奏效,但不幸的是没有。

save! 方法将 return 为真或引发异常,因此您可以安全地执行:

 def model_method(args)
  #...
  obj.save!
  #... void code assuming save! worked ...
  true
end

但这几乎可以肯定是错误的。您能否更新您的问题,以便明确您实际想要实现的目标?

编辑:

更通用的解决方案:

def model_method(args)
  #...
  if result = obj.save!
    #... void code assuming save! worked ...
  end
  result
end