質問: 'running' # 状態`status`を進行中にする save! end ``` ユーザが入力した`due_date`が`save!`バリデーションエラーになったとき、画面にエラーメッセージを表示して再入力を促します。入力した`due_date`はそのまま入力欄に保持されて欲しいのですが、画面に表示している`status`と`started_at`は元の`pending`と`nil`に戻したいです。 `rescue` でキャッチして値を自分でひとつずつクリアする方法しか思い浮かびませんでした。 フォームクラスのようなものでバリデーションするRails以外のWAFはモデルと入力値が関連付いてないので問題ないのですが、Railsのようにモデルを直接画面に表示したり、バリデーションしたりする系のフレームワークってどうされてるんでしょう?
回答: `started_at`などの代入前に`valid?`で状態をチェックして、うまく行かなければそこで`ActiveRecord::RecordInvalid`を投げてしまう、というようにしてはどうでしょうか。 もっとも、自分で作った書き込みメソッドを使うということ自体、Rails的に少し違うかなという気もします。