2010-12-29 3 views
1

私はバリデーションメソッド内からバリデーションを実行すると次のコードを実行します。検証が失敗しているようRailsバリデーションとロールバック

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

しかし、この更新がロールバックされ、どのように私は

+0

なぜロールバックを防止したいですか?何か意味がありませんか? – Lichtamberg

+0

self.limit_reached = trueの場合は、self.limit_reached == true(double equal)とする必要があります。問題が解決するかどうかはわかりませんが、間違いなく問題を解決してください – house9

答えて

3

はこれを試してみてくださいロールバックされることから、この1回の更新を防ぐことができます。

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 

はそれが役に立てば幸い!

関連する問題