2013-01-05 3 views
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)가 나는 오류를 추가하기 때문에 그것의 생각, 롤백 후 불 것 같다,하지만 난 해당 업데이트가 유효성 검사와 관련이 없으며 유효성 검사 오류가 있어도 실행해야하는 이유는 확실하지 않습니다.

이 문제를 해결할 수있는 방법은 없나요?

+0

실제 코드입니까? 그것은 else 절이 없거나 적어도 if 절의 끝이 보이지 않는 것 같습니다. – davidrac

+0

@davidrac 고정! – Ryan

+0

'update_attributes'는 유효성 검사를 통과하지만'update_attribute'는 유효하지 않습니다. – MrYoshiji

답변

0

사용자 개체가 유효하지 않을 수 있습니다. documentation에서

:

어떤 검증이 실패하면, 객체가 유효하지 않은 것으로 표시되고 액티브 레코드는 것입니다 당신이 개체에 오류가있는 경우, 다음 Active 레코드는 데이터베이스를 업데이트하지 않습니다 INSERT 또는 UPDATE 작업을 수행하지 마십시오.