Ruby on rails 如何使用整数列的数值性验证?
给定一个整数列,如何防止字母数字存储为零 我尝试使用Ruby on rails 如何使用整数列的数值性验证?,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,给定一个整数列,如何防止字母数字存储为零 我尝试使用数值性验证器,但似乎在类型转换后(使用to_I)检查了该值,因此像'dd1'这样的字符串被类型转换为0,从而通过了验证 validates :portfolio_number, numericality: { only_integer: true, allow_nil: true } 您可以创建自己的验证,用于检查类型转换的值: validate :portfolio_number_is_numeric private def portf
数值性
验证器,但似乎在类型转换后(使用to_I
)检查了该值,因此像'dd1'
这样的字符串被类型转换为0
,从而通过了验证
validates :portfolio_number, numericality: { only_integer: true, allow_nil: true }
您可以创建自己的验证,用于检查类型转换的值:
validate :portfolio_number_is_numeric
private
def portfolio_number_is_numeric
return unless value.present?
errors.add(:portfolio_number, 'must be numeric') unless read_attribute_before_type_cast(:portfolio_number).match?(/\A[0-9]*\z/)
end
这可能会被提取到一个验证器对象中以供重用