バリデーション用の正規表現を別ファイルにまとめたい
下記のような正規表現によるバリデーションを実装しました。
class User < ApplicationRecord
validates :email, format: { with: /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i }
end
この正規表現を、他のモデルやコントローラ等どこでも使い回せるように別ファイルに切り出したいです。(使用する正規表現をまとめたファイルを作りたい)
調べてみるとバリデーションはrailsが起動したときに1回だけ初期化するようだったので、config/initiaizersを利用しようと思いました。具体的には下記です。
config/initializers/common_regexp.rbにモジュールを定義。
module CommonRegexp
module_function
# わざわざメソッドにしているのは、引数を受け取り
# 動的に正規表現を変えることも検討しているため。
def format_email
/\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
end
# 以下他の正規表現もまとめる
end
.
class User < ApplicationRecord
validates :email, format: { with: CommonRegexp::format_email }
end
これで一応動いたのですが、正規表現をまとめるためにconfig/initializersを使用するのは用途が間違っているような気がします。
こういった場合、どのように実装するのがベストですか?