模型有一个名为:size
的整数字段。我在控制器中使用#update model_params
。我知道我可以在控制器中创建一个方法,在设置模型中的值之前从size
解析params[:size]
,但我想知道是否可以直接在模型中创建过滤器。我试过了
validate :size_validation
def size_validation
size_number = human_to_number self.size
if size_number < 1_000_000
errors.add(:size, "has to be greater than USD $1 million")
else
self.size = size_number
end
end
def human_to_number(human) ... end
但它没有奏效并且给出了错误&#34;未定义的方法&#39; downcase!&#39; 45:Fixnum&#34;。然后我尝试了callback。
validates :size, numericality: {only_integer: true, greater_than: 1_000_000}
before_update do ###### also tried after_update
self.size = human_to_number self.size
end
但这会产生验证错误&#39;尺寸不是数字&#39;。