繁体   English   中英

Rails验证虚拟属性

[英]Rails validating virtual attributes

我这个型号:

class Bunny < ActiveRecord::Base
    attr_accessor :number
    validates_presence_of :number
    validates_numericality_of :number
end

每当我提交表单来创建此模型时,我都会收到以下错误:

未定义的方法`number_before_type_cast'用于#<Bunny:0x103624338>

我通过将此方法添加到我的Bunny模型来修复问题:

def number_before_type_cast
    number
end

我不喜欢它,但我认为它会起作用,直到有人发布更好的解决方案。

Rails在模型中为每个字段生成FIELDNAME_before_type_cast 它将表单中的值存储为String,然后在此情况下将其转换(转换)为数字(例如,可能是日期)。 此转换发生在保存之前,但在验证之后。

因此,在执行强制转换之前进行验证时,必须使用“before type cast”值来获取值。 由于这不是为您的属性生成的,因此会失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM