ActiveRecordで、全部のモデルのstring型等に共通のvalidateを追加する

postgresでstring型だと255文字までしか入力出来ないので、255文字をMAXとするとか、
コーディング規約で必須になる名称を_nameという名称で統一するとかやりたかったので
こんなコード書いた。

module ActiveRecordValidate
  def after_initialize
    @@load_validates ||= []
    return if @@load_validates.include?(self.class)
    @@load_validates << self.class
    attributes.each do | self_attribute |
      eval_expr = ""
      self_column = column_for_attribute(self_attribute) 
      next if self_column.nil? || self_attribute.blank? 
      if self_attribute =~ /_name$/
        eval_expr += "validates_presence_of :#{self_attribute}\n"
      end
      if self_column.type == :string
        eval_expr += "validates_length_of :#{self_attribute}, :allow_blank => true, :maximum => 255\n"
      end
      self.class.class_eval eval_expr unless eval_expr.blank?
    end
  end 
end   
      
class ActiveRecord::Base
  include ActiveRecordValidate
end

インスタンス生成毎に読み出すのが凄い駄目。
ActiveRecord::baseを継承したクラスを宣言したタイミングで実行したいんだけど、
何かそういうフックは無い物か・・・・。