gpt4 book ai didi

ruby - Rails 将子错误与父错误合并

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:58 25 4
gpt4 key购买 nike

我有以下两个(净化/程式化)模型:

 class DrivingExam < ActiveRecord::Base
belongs_to :dmv_rules
has_many :invigilator_assignments, as: :assignable
has_many :invigilator, through: :invigilator_assignments

validate do |record|
record.invigilator_assignments.each do |i|
next if i.valid?
i.errors.full_messages.each do |msg|
errors.add_to_base(msg)
end
end
end
end



class InvigilatorAssignment < ActiveRecord::Base
attr_accessible :invigilator_id

belongs_to :assignable, polymorphic: true
belongs_to :invigilator

validates :invigilator_id, presence: true

validates_each :invigilator do |record, attr, value|
if record.assignable.is_a?(DrivingExam) && !value.no_scheduling_conflicts?
record.errors.add attr, "This Invigilator has a scheduling conflict"
end

end
end

这些从 DrivingExamController 调用通过:

 if @driving_exam.save

预期的行为是模型应在验证时返回 false 并将子消息加入父错误哈希并将其传递给 Controller ​​。

实际发生的是页面无法保存(这很好)并返回 422(这很奇怪)并且没有传递消息。

通过添加 puts上述代码中的陈述,我已经确定:

1) validates_each 中的 if 条件是成功的,record.errors数组因此设置在 InvigilatorAssignment 中模型。

2) 在 validate do 中循环监考作业有效且无错误

3) validate do循环在 validates_each 之前运行循环

所以问题是:我如何确保 DrivingExam验证 InvigilatorAssignment并将其错误消息合并到自己的错误哈希中。

最佳答案

引用stackoverflow上的这个问题:

Ruby on Rails: how to get error messages from a child resource displayed?

这和你想要的差不多。

关于ruby - Rails 将子错误与父错误合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430085/

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