Rails验证和回滚

时间:2010-12-29 18:09:48

标签: ruby-on-rails transactions

我有以下代码在验证方法验证时运行。

def validate
    if self.limit_reached = true
        self.errors.add('plan', 'limit reached')
        self.account_setting.update_attribute(:email_sent, true)
    end
end

但是,由于验证失败,正在回滚此更新,如何防止这一更新被回滚

1 个答案:

答案 0 :(得分:3)

试试这个:

def validate
  if self.limit_reached
    self.errors.add('plan', 'limit reached')
    @set_email_sent = true
    return false
  end
end

def after_rollback
  if @set_email_sent
    self.account_setting.update_attribute(:email_sent, true)
  end
end

希望它有所帮助!