Railsvalidation虚拟属性
我这个型号:
class Bunny < ActiveRecord::Base attr_accessor :number validates_presence_of :number validates_numericality_of :number end
每当我提交表单来创建此模型时,我都会收到以下错误:
未定义的方法`number_before_type_cast’用于#
我通过将此方法添加到我的Bunny模型来解决问题:
def number_before_type_cast number end
我不喜欢它,但我想它会工作,直到有人发布更好的解决方案。
Rails在模型中为每个字段生成FIELDNAME_before_type_cast
。 它将表单中的值存储为String,然后在此情况下将其转换(转换)为数字(例如,可能是日期)。 此转换发生在保存之前,但在validation之后。
因此,在执行强制转换之前进行validation时,必须使用“before type cast”值来获取值。 由于这不是为您的属性生成的,因此会失败。