2016-10-05 37 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