2016-10-05 9 views
0

同じフォーマットを使用するいくつかのモデル(18個のモデル)があります:{with://}バリデーション。これらの共通フォーマットをすべて1つのファイルに入れたり、定数を使用する方法はありますか?それで、フォーマットを変更すると、サブクラス化を使わずに18種類のモデルを更新する必要がなくなります。 (モデルはすでに他の理由でサブクラス化されています)?一般的な正規表現の正規表現

例:再び

# Some file, etc. that is accessible by all models 
CONSTANT_FORMAT = /\A^[a-fA-F0-9]*\Z/ 

# Validation in several models (same validation) 
validates :some_value, allow_blank: true, length: { in: 10..50 }, format: { with: CONSTANT_FORMAT } 

ありがとう:

validates :some_value, allow_blank: true, length: { in: 10..50 }, format: { with: /\A^[a-fA-F0-9]*\Z/ } 

私はこのような何かをしたいと思います!

答えて

2

あなたはlibフォルダの下にモジュールを作成し、そこ

module CommonConstant 
    CONST_REGEX = /\A^[a-fA-F0-9]*\Z/ 
end 

をすべて共通の定数を移動し、

validates :some_value, allow_blank: true, length: { in: 10..50 }, format: { with: CommonConstant::CONST_REGEX } 

モジュールがlibので、ファイル内にあるように、あなたのモデルに定数にアクセスすることができますlibauto load pathの場合は既にロードされています