我有以下课程:
@echo off
set Log=c:\temp\logfile.txt
usbdeview.exe /stext %Log%
resolution属性不存储在数据库中,而是实例的瞬态属性。
当它调用validate!时,无论包含什么规则,验证都会失败。没有它,验证根本不起作用。
如何正确验证?
答案 0 :(得分:2)
您可以使用=~
运算符来匹配字符串和正则表达式,使用此方法可以在setter方法中添加条件
def resolution=(res)
if res =~ /\A\d+x{1}\d+\d/
# do something
else
# errors.add(...)
end
end
但是,因为您已经使用过attr_accessor
,所以您不必明确定义getter和setter,attr_accessor
的作用是定义getter和只有setter方法,你可以这样做
class Instance < ActiveRecord::Base
attr_accessor :resolution
validates_format_of :resolution, with: /\A\d+x{1}\d+\d/
end
上述解决方案将完美运作!
希望这有帮助!
答案 1 :(得分:1)
设置变量后应调用validate!
方法。在给定示例中,当值仍为零时,您将调用validate!
。