Ruby on rails Rails模型验证属性的互斥性
我有一个Ruby on rails Rails模型验证属性的互斥性,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我有一个EventType模型,我想确保该模型只有以下属性之一(如果有的话):points\u required或percentage\u required 为了澄清,始终需要使用name所需分数不是必需的,出席率也不是必需的。但是,如果提交这两份文件中的任何一份,则只有一份可以出席 我只能找到其他几个类似的问题,但没有一个是有用的 到目前为止,这是我在EventType模型中的内容: validates :name, presence: true, length: { maximum: 50
EventType
模型,我想确保该模型只有以下属性之一(如果有的话):points\u required
或percentage\u required
为了澄清,始终需要使用name
<代码>所需分数不是必需的,出席率也不是必需的。但是,如果提交这两份文件中的任何一份,则只有一份可以出席
我只能找到其他几个类似的问题,但没有一个是有用的
到目前为止,这是我在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? }
这可以确保每个字段的格式正确。但是,如果一个模型同时保存了所需的出席率和所需的点数值,它仍然通过验证,这不是我想要的
有什么建议吗?我相信您可以将这些结合到现有的验证中,以使事情干涸,但是验证\u缺少\u
是您需要的
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? }
杰出的谢谢这对我有用。实际上,rails 4中的:缺位
不过:@AlexVallejo Fat指了指的是“U of”。固定的。谢谢