提问人:Suganya Selvarajan 提问时间:10/9/2023 更新时间:10/9/2023 访问量:13
Rails 表单批量编辑验证
Rails Form bulk edit validation
问:
我的 Rails 应用程序中有一个学年的批量创建表单。我需要在此批量表单上实现验证。基本验证工作正常。我有一个自定义验证,可以检查学年是否相互重叠。
例如,第一学年的持续时间是 2022 年 9 月 1 日至 2023 年 8 月 31 日。因此,在此期间不能有另一个学年,或者在第一学年期间不能重叠。
class CustomValidator < ActiveModel::Validator
def validate(record)
return if overlapping_siblings(record).empty?
record.errors.add(options[:error_attribute], :overlapping_dates)
end
private
def overlapping_siblings(record)
scope = options[:scope] || -> { record.class.all }
scope
.call(record)
.where.not(id: record.id)
.where("? >= started_at AND ended_at >= ?", record.ended_at,
record.started_at)
end
end
此验证器适用于创建单个对象。但对于批量形式,这不起作用(这是意料之中的)。因为,如果批量表格试图创建具有重叠日期的 2 个学年,因为它们仍然不在数据库中,因此它们不会相互验证,因此不会捕获重叠错误。
在批量表单上实现重叠日期验证的正确方法是什么?
答: 暂无答案
评论