验证至少选中一个复选框

时间:2016-01-12 20:32:28

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

我正在尝试验证表单中至少有一个复选框已被选中,但它目前无法正常工作。

这就是我的控制器的样子:

class UserExpertise < ActiveRecord::Base
  belongs_to :user
  validate :atleast_one_is_checked

  def atleast_one_is_checked
    errors.add(:base, "Select at least one expertise") unless :gardening || :cooking || :cleaning || :washing_up
  end
end

但是,如果没有选择任何错误,则不会显示错误。顺便提一下,如果我要删除代码的“除非”部分,如下所示,无论选择了多少或几个,都会一直显示错误。

  def atleast_one_is_checked
    errors.add(:base, "Select at least one expertise") 
  end
end

我无法验证是否已选择至少一个复选框,因为上述似乎不起作用。任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:1)

:gardening:cooking:cleaning:washing_up在这里是符号,它们被条件语句视为true值。使用与属性相关的方法,只需:

def atleast_one_is_checked
  errors.add(:base, "Select at least one expertise") unless gardening || cooking || cleaning || washing_up
end