Ruby
Rails
Rails5

Railsの複数チェックボックスで必須チェック

collection_check_boxesで生成したチェックボックス群で一つでもチェックが入ってなかったらエラーにする方法を紹介します。

<% #erbで %>
<%= form.collection_check_boxes :my_check_boxies, ..., include_hidden: false %>
# モデルで
validates :my_check_boxies, presence: true

collection_check_boxesはデフォルトでチェックの入ってない時、空文字を送信します。何もチェックしないで送ると[""]が送信されてきます。これを必須チェックするには独自バリデーションを作らないと無理そうです(もしできるなら教えてください)。

そこで、チェックが入っていない時、何も送られてこないようにinclude_hidden: falseで設定します。そうするとチェックを入れてない時何も送られてこないのでpresenceでチェックが可能です。

私の検索方法が悪かったのか、意外に見つからなかったので共有します。