Ruby on rails 通用验证正则表达式格式

Ruby on rails 通用验证正则表达式格式,ruby-on-rails,ruby-on-rails-4,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/

我有几个模型(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 }

再次感谢

您可以在
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
,您可以在
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
,则文件将已加载