Railsのモデルのvalidates_xxxメソッドの扱いについて

Railsやってると面白くなってついモデル50個ぐらい作っちゃったんだけど、モデルのvalidationをvalidates_XXXでやっていると、たとえばあるのアクションからは、validates_presence_ofだけでvalidationしたいのに別のアクションからの場合は、validates_presence_ofとvalidates_length_ofで検証したいなんて事があると思うんだけど、これ、他の人はどうやって解決しているんだろう。

いろいろ考えた結果、いくつか案はあるけど決定打にかける。

  1. 基本的なものだけvalidates_xxxでやって、それ以外はcontrollerでifとか正規表現とかでゴリゴリvalidationを実装する。
  2. validates_xxxのバリエーションごとにモデルを分ける
    1. 基本的なvalidates_xxxは基底のモデル
    2. 特殊なアクションからは基底のモデルを継承したサブクラスでvalidate_yyyを加える

(最初これやってモデル数がさらに増加しました。)

  1. アクション毎に必要なvalidates_xxxをmodule化してアクション毎に読み込む
  2. validate_xxxを(Railsレシピにのっていたんですが)非ActiveRecordにも対応できるように改造してコントローラでvalidateを実施する。


だれかいい方法しりませんか?