Ruby
Rails
Validation
Rails5

Railsで配列におかしな値がないかチェックする

チェックボックスなどで複数の値を受け取るフォームで、直接変な値をポストされた時に弾きたいと思ったのですが、最初から用意されてるバリデーションではできないようですね。inclusionは値が単一であることが前提なので使えません。独自バリデーターを書く必要があります。

Gistにアップしたので参考にどうぞ。

whitelist_validator

ちなみにapp/validationsに独自バリデーターを置くのはよくやるっぽいですが、パスを通さないと読み込まないので注意してください。

# config/application.rb
config.paths.add Rails.root.join('app', 'validators').to_s, eager_load: true

本筋とは関係ないですがホワイトリストはwhite listではなくwhitelistという一語なんですね。