gpt4 book ai didi

ruby-on-rails - 保存验证部分失败的模型

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:18 25 4
gpt4 key购买 nike

假设我有以下模型:

class Car < ActiveRecord::Base

attr_accessible :wheels,
:engine_cylinders

validates :wheels, :engine_cylinders, presence: true, numericality: true

end

假设我有以下 Controller 操作:

@car = Car.find(params[:id])
@car.wheels = "foo"
@car.engine_cylinders = 4
@car.save

此保存将失败,因为轮子将无法满足数值条件。

有什么方法可以保留成功的属性(在本例中为 engine_cylinders),同时将无效的属性添加到错误数组中?例如。 Rails 中有“软”验证吗?

最佳答案

你想写一个 Custom Validator .

class Car < ActiveRecord::Base
validate :wheel_range,
:engine_cylinder_range

def engine_cylinder_range
flash[:notice] = "engine_cylinder was not saved because it wasn't a number" unless engine_cylinder.is_a? Fixnum
# set engine_cylinder back to old value
end

def wheel_range
flash[:notice] = "wheels was not saved because it wasn't a number" unless wheels.is_a? Fixnum
# set wheels back to old value
end
end

您不必在这里使用flash,您可以使用任何变量进行内部处理或重新显示。

您可能还想对 :before_save hook 进行自定义验证检查.使用 _was magic method获取旧值。

关于ruby-on-rails - 保存验证部分失败的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com