如何在不同的列和不同的模型上重用同一组验证



我们在不同的字段上有相同的验证集。我们有费用栏。通过以下验证

validates :sytem_fee, presence: true, 
format: { with: fee_regex, message: format_error_message }, 
numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 40 }
validates :sytem_discounted_fee, presence: true, 
format: { with: fee_regex, message: format_error_message }, 
numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 40 }

应用于列的验证集基本相同。我们还有不同型号的费用。他们基本上有相同的验证。我知道有一些自定义验证器,比如:EmailValidator < ActiveModel::EachValidator

我的问题是:我们能创建一个使用默认验证(如存在性、数字性等(的自定义验证程序吗?

这个想法是能够在任何型号的中说出validates some_fee, percent_fee_column: true

您可以将您的方法放在app/models/concerns文件夹中,例如,作为Validatable模块(即validable.rb(:

module Concerns::Validatable
extend ActiveSupport::Concern
def format_website
if website.blank?
self.website = nil
elsif !self.website[/^https?/]
self.website = "http://#{self.website}"
end
end
end

然后将其作为包含在每个模型中

include Concerns::Validatable

相关内容

  • 没有找到相关文章

最新更新