在custom_context上的Rails 4 validates_associated应该没有失败

时间:2017-04-25 00:24:32

标签: ruby-on-rails validation ruby-on-rails-4 activerecord

我有一个具有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. 

我的语法是否关闭?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您确定该转变是否已添加到报告中?添加班次后的第一份打印报告,只是为了确定。

并将其添加到您的报告模型

accepts_nested_attributes_for :shifts, reject_if: :all_blank, allow_destroy: true

有了这个,不需要validates_associated,因为在这种情况下将始终触发验证。