我有EventType
模型,我希望确保只有以下属性之一:points_required
或percentage_attendance_required
。
为了澄清,始终需要name
。 points_required
不是必需的,也不是percentage_attendance_required
。但是,如果提交了这两个中的任何一个,则只能有一个。
我只能找到与此相似的其他几个问题,但没有一个问题对我们有帮助。
到目前为止,这是我在EventType模型中的内容:
validates :name, presence: true, length: { maximum: 50 }
validates :points_required, presence: true, length: {maximum: 2},
numericality: { only_integer: true },
if: Proc.new { |e| e.percentage_attendance_required.blank? }
validates :percentage_attendance_required, presence: true,
length: {maximum: 3}, numericality: { only_integer: true },
if: Proc.new { |e| e.points_required.blank? }
这可以确保每个字段的格式正确。但是,如果使用percentage_attendance_required
和points_required
值保存模型,它仍会通过验证,这不是我想要的。
有什么建议吗?
答案 0 :(得分:1)
我确定您可以将这些内容合并到现有的验证中,但是validates_absence_of
是您正在寻找的内容。
validates :points_required, absence: true,
if: Proc.new { |e| e.percentage_attendance_required.present? }
validates :percentage_attendance_required, absence: true,
if: Proc.new { |e| e.points_required.present? }