モデルが検証エラーをキャッチするとしましょう。通常、これはコントローラーによって処理されますが、モデルによって自動的に処理することは可能ですか?
uid
実際には、各に一意の id を生成したいのですがNote
、モデルは次のようになります。
class Note < ActiveRecord::Base
validates_uniqueness_of :uid
# ... some code to generate uid on after_initialize
end
私が得た最も近いものは次のとおりです。
class Note < ActiveRecord::Base
validates_uniqueness_of :uid
# ... some code to generate uid on after_initialize
after_rollback :repair
protected
def repair
if self.errors[:uid].size > 0
self.uid = generate_uid
end
self.save # Try again
end
end
私の解決策に関する差し迫った問題: (1) モデル インスタンスには、コントローラが認識できるエラーがまだあります。エラーをクリアする方法がわかりません。(2) 修復方法は再帰的です。