【发布时间】:2013-09-05 18:44:20
【问题描述】:
假设我有以下模型:
class Car < ActiveRecord::Base
attr_accessible :wheels,
:engine_cylinders
validates :wheels, :engine_cylinders, presence: true, numericality: true
end
假设我有以下控制器操作:
@car = Car.find(params[:id])
@car.wheels = "foo"
@car.engine_cylinders = 4
@car.save
此保存将失败,因为车轮将无法满足数字条件。
有什么方法可以保留成功的属性(在本例中为 engine_cylinders),同时将无效的属性添加到错误数组中?例如。 Rails 中是否有“软”验证?
【问题讨论】:
-
这确实应该澄清(例如“propogate”的定义)。另外,请注意,验证通过填充
errors数组与save机制进行通信,因此任何向该数组添加内容的验证都将禁止任何后续保存。 -
虽然“传播到磁盘”是一个常见的想法,但“持久”可能是更标准的措辞。
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 rails-activerecord