2016-10-05 69 views
0

我有幾個使用相同格式的模型(18個模型):{with://}驗證。有沒有辦法將所有這些常用格式放置到一個文件中或使用常量的方式,以便如果我們對格式進行更改,則會將其更改爲所有模型,而無需使用子分類來更新18個不同的模型(由於其他原因,模型已經被分類)?常見驗證正則表達式格式

例子:

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

我想要做這樣的事情:再次

# 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 } 

謝謝!

回答

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