如何在条件中使用After_save在save DB中创建对象

时间:2016-04-28 20:22:12

标签: ruby-on-rails ruby ruby-on-rails-4 callback

我的授权模式中有这个:

after_save :generate_charged, :if => :authorization?

我需要执行这个方法:只有在授权是由模型授权创建的时才生成generate_charged,因为在我的代码中,我还有Refinancings,它也创建了授权。

在我的authorization_model中有:

def authorization?
  # If create from Authorization == true
  # My routes /authorization can serve for something?
end 

1 个答案:

答案 0 :(得分:1)

您可以将此逻辑放在after_save

中,而不是使用authorization_controller
def create
  attrs = { your form attrs }
  if @authorization.update_attributes(attrs)
    @authorization.generate_charged
    # then, redirect
  else
    render "new"
  end
end

然后,当然,在您的Refinancings控制器中,不要调用该方法。

有一些方法可以在保存之后执行此操作(即设置一个无关的变量以在模型中进行检查),但可能对您的情况有些过分。即使这样,您也可以在控制器中使用代码来实现此目的。因此,我认为绕过这一切是最短路径。