ActiveRecordの検証機能だけを利用する

 メール送信機能を作ってて、入力された内容に問題が無いか確認するためにはActiveRecordの検証機能を使えば楽ではないかと思いつきました。


 しかし、調べてみたところ、ActiveRecordを継承したクラス以外では利用が難しいようなので、単に検証機能だけを利用すれば良いと判断しました。


 具体的には、以下の手順でActiveRecordの検証機能のみを利用できました。

  1. script/generator modelでメール送信用の入力データを持ったモデルを生成する。
  2. migration機能でテーブルをcreateする。
  3. メール送信先のcontrollerでメール送信内容から上記のモデルを生成する。
  4. valid?メソッドを呼び出し、検証する。*1


 要するにDB内にテーブル定義のみを持たせ、データを格納せずに検証のみを行う、という方法です。
 テーブル定義のみであれば情報漏えいの心配はありませんし、容量の圧迫もあるとは思えませんので、妥当な方法ではないかと思いますし、他の入力系にも利用できそうです。

*1:valid?メソッドの呼び出しでvalidatesされるため、saveは不要です