0

所以我有这样的事情:

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)似乎启动然后回滚,我认为这是因为我添加了一个错误,但我不确定为什么这是一个问题,因为该更新与验证无关并且即使存在也应该执行验证错误。

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

4

1 回答 1

0

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

文档中:

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

于 2013-01-05T18:22:59.480 回答