ActiveRecordの検証機能だけを利用する
メール送信機能を作ってて、入力された内容に問題が無いか確認するためにはActiveRecordの検証機能を使えば楽ではないかと思いつきました。
しかし、調べてみたところ、ActiveRecordを継承したクラス以外では利用が難しいようなので、単に検証機能だけを利用すれば良いと判断しました。
具体的には、以下の手順でActiveRecordの検証機能のみを利用できました。
- script/generator modelでメール送信用の入力データを持ったモデルを生成する。
- migration機能でテーブルをcreateする。
- メール送信先のcontrollerでメール送信内容から上記のモデルを生成する。
- valid?メソッドを呼び出し、検証する。*1
要するにDB内にテーブル定義のみを持たせ、データを格納せずに検証のみを行う、という方法です。
テーブル定義のみであれば情報漏えいの心配はありませんし、容量の圧迫もあるとは思えませんので、妥当な方法ではないかと思いますし、他の入力系にも利用できそうです。
*1:valid?メソッドの呼び出しでvalidatesされるため、saveは不要です