我有一个表(剂量)的表,定义为小数。当用户填写此列的表单字段时,我想确保他们输入有效的数字。我想使用validates_numericality_of :dose
,但这不起作用。如果用户输入非数字值(例如“马”),则将值0保存到数据库并传递验证。我希望提出错误。
有没有办法在对象生命周期中更早地捕获它?在什么时候活动记录将字符串转换为0?
答案 0 :(得分:1)
我的期望是你有另一个插件或钩子或某些东西阻碍并在验证前更改值。
为了更好地了解情况,可以在模型中添加一个before_validation钩子,并在验证开始之前提升self.inspect以查看对象的样子。尝试在:dose属性中保存带有文本的实例,并查看它的外观。