めもめも のーと

ハマったこととか、覚えたこととか

Rubyの%wを使うときは型に気を付けよう

Railsのvalidationルールにinclusionがあるが、含まれる値をinに指定する際には注意が必要。

Rails Guideでも使っているが、配列を表現するために %wを使う場合、中身は文字列になるので、数字を検証したい場合は要注意。

例えば %w(0 1 2)[0, 1, 2]は別物なのである。

%wは文字列扱いになるので、["0", "1", "2"] ということになる。

読み読むとrubydocにも「文字列の配列を簡単に表現できる」と書いてある。 https://docs.ruby-lang.org/ja/latest/doc/spec=2fliteral.html#percent

まとめ

%wの使い方をよく知っていなかっただけなので、Railsのinclusionバリデーションが悪いわけではないが、 「数字の0,1のみ受け付ける」という検証が出来ずにはまったので、メモとして残しておく。