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 に答える