我有这个验证:
validates :year, :presence => true, :numericality => { :only_integer => true }, :uniqueness => true
这在Firefox中运行良好,但在Chrome中数值验证无效。如果我写23ab
保存为23
并且不显示错误。可以因为HTML5的标签输入类型号?
答案 0 :(得分:1)
检查您的操作实际接收的参数(即检查您的development.log
)并在params
哈希中发布实际发送到控制器的信息。
在浏览器传输表单数据之后,在数据库中保存/更新之前,模型中的验证发生在服务器端。因此,如果来自两个不同浏览器的完全相同的输入产生不同的验证结果,那么它可能在浏览器被控制器操作接收之前被浏览器修改。
换句话说:它不是被跳过的验证,它是被修改的输入数据,至少是最有可能的。检查你的params
散列实际上是什么,你将在回家的路上。