退货保存!带DRY的代码后的值

时间:2015-04-27 18:40:41

标签: ruby-on-rails save dry

您好我正在尝试编写功能相当于的代码:

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

通常我会使用after_save回调,但是有一些参数传递给我需要用于...code...剪辑的这个模型的方法。

有关如何利用DRY进行此操作的任何想法?

我希望像obj.save!.tap { ... }之类的东西可行,但不幸的是没有。

1 个答案:

答案 0 :(得分:0)

save!方法将返回true或引发异常,因此您可以安全地执行:

 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