常见的验证正则表达式格式

时间:2016-10-05 18:12:51

标签: ruby-on-rails ruby-on-rails-4

我有几个使用相同格式的模型(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 }

再次感谢!

1 个答案:

答案 0 :(得分: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,因此如果您lib下有auto load path,则该文件已经加载