我有一个具有has_many关联的模型的自定义验证上下文。我相信我已正确设置验证,但验证不会失败。以下是我的模特
class Report < ActiveRecord::Base
has_many :shifts
validates_associated :shifts, on: :submit
end
class Shift < ActiveRecord::Base
validates_presence_of :name
validates_presence_of :clock_in, on: :submit
end
r = Report.new
r.shifts << Shift.new(:name => "Nick")
r.valid?
=> true
r.valid?(:submit)
=> true #should be invalid since clock_in is blank still.
我的语法是否关闭?我错过了什么吗?
答案 0 :(得分:0)
您确定该转变是否已添加到报告中?添加班次后的第一份打印报告,只是为了确定。
并将其添加到您的报告模型
accepts_nested_attributes_for :shifts, reject_if: :all_blank, allow_destroy: true
有了这个,不需要validates_associated,因为在这种情况下将始终触发验证。