私はActiveRecordオブジェクトを持っています。モデルに永続的な検証を行わずに、保存しないようにしたいと思います。以前はerrors.add
を使ってこのようなことをすることができましたが、それはもう動作しないように見えます。私はそれは、モデルの変更せずにRailsの3.2に救わからユーザーオブジェクトを防ぐことができますどのようにRails 3.2エラーを使用してオブジェクトを保存しないようにする
user = User.last
user.errors.add :name, "name doesn't rhyme with orange"
user.valid? # => true
user.save # => true
または
user = User.last
user.errors.add :base, "my unique error"
user.valid? # => true
user.save # => true
?
"永続的"検証を使用できない理由は何ですか?あなたがしようとしていることをやっていると思っているのは、モデル外で検証ロジックを動かすことです。これは良い考えではありません。 –
私はこの質問に多くの質問をしています。私はhttps://github.com/schneems/wickedを書いた宝石を手に入れました。オブジェクトが保存されている_every_ timeと呼ばれることのない1行のバリデーションを書いています。ウィザードのコンテキストこの情報をドキュメントに追加します。メタプログラミングによって、実行時までどのモデルを更新しているのかわからなくても可能です。エラーが追加されたときにARオブジェクトが保存されないようにする一般的な方法は、Railsの以前の動作と非常に役立ちます。なぜかにかかわらず、どのようにまだ立つのだろうかという疑問。 – Schneems