Dan*_*ipo 10 ruby ruby-on-rails ruby-on-rails-3
我有一个名为value的属性的对象,其类型为大十进制.在类定义中,我有validates_numericality_of.
但是,如果我:
a.value = 'fire'
Run Code Online (Sandbox Code Playgroud)
'fire'最终在验证触发之前将类型转换为正确的类型,因此:
a.valid? => true
Run Code Online (Sandbox Code Playgroud)
如何在类型转换之前获得验证?
谢谢
担
Mla*_*vić 15
有时,您希望能够在不确定列确定的类型转换的情况下读取原始属性数据.这可以通过使用
<attribute>_before_type_cast所有属性具有的访问器来完成.例如,如果您的Account模型具有balance属性,则可以调用account.balance_before_type_cast或account.id_before_type_cast.这在用户可能为整数字段提供字符串并且您希望在错误消息中显示原始字符串的验证情况下特别有用.通常访问该属性会将字符串类型转换为0,这不是您想要的.