読者です 読者をやめる 読者になる 読者になる

@Konboi memo

主に技術に関してつらつらと。

Railsのバリデーションで少しハマった。

rails ruby

はじめに

Railsのバリデーションで少しハマったのでメモ。

今回ハマったのは、入力する数字の範囲でバリデーションをかけたいとき。

内容

例えばx座標で、xには0から400まで値を持たせたい。

  • ハマった方法
validates :x,  :length => { :maximum  => 400 }
  • 解決方法
validates :x,  :inclusion => { :in => 0..400 }

ハマった方法のやり方だと、400桁までというバリデーションになってしまう。

テストコード

こんな感じでテストしてた

      @hoge.x = 401
      expect(@hoge.save).to eq(false)

      @hoge.x = -1
      expect(@hoge.save).to eq(false)
      
      @hoge.x = 400
      expect(@hoge.save).to eq(true)



Rails3レシピブック 190の技
高橋 征義 松田 明 諸橋 恭介
ソフトバンククリエイティブ
売り上げランキング: 71,799