回滚更新查询

时间:2013-01-05 18:13:07

标签: ruby-on-rails activerecord

所以我有这样的事情:

class Account < ActiveRecord::Base
  validate :check_credit
  belongs_to :user

  private

  def check_credit
    check = HTTParty.get(CREDIT_URL, query: {account_id: id})

    if !check.eligible
      user.update_attributes(:xx => xx)
      errors.add(:base, "Sorry, you are not eligible")
    end
  end
end

当我看到日志时,user.update_attributes(:xx => xx)似乎启动然后回滚,我想是因为我添加了一个错误,但我不确定为什么这是一个问题,因为该更新与验证,即使存在验证错误也应该执行。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

可能是用户对象无效?如果对象中有错误,则Active记录不会更新数据库:

来自documentation

  

如果任何验证失败,该对象将被标记为无效   Active Record不会执行INSERT或UPDATE操作