teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

修正

2021/10/30 22:35

投稿

katahik
katahik

スコア79

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,10 @@
3
3
  モデルにvalidatesを設定して、バリデーションを行っていますが、最大文字数のバリデーションが正常に動きません
4
4
  company.rb
5
5
  ```
6
+ validates :price,
6
- validates :price, length: {maximum: 23}
7
+ length: { maximum: 23 },
8
+ presence: true,
9
+ numericality: true
7
10
  ```
8
11
  このように記述して、フォームから
9
12
  23文字(10000000000000000000000)入力した際にバリデーションに引っかかります。

2

編集

2021/10/30 22:34

投稿

katahik
katahik

スコア79

title CHANGED
File without changes
body CHANGED
@@ -41,6 +41,15 @@
41
41
  ```
42
42
  Parameters: {"price"=>"10000000000000000000000"}
43
43
  ```
44
+ パラメータをみたときに文字列になっていたので、controllerのパラメータを受け取るところで、v[:price] = v[:price].to_i としましたが、やはり、バリデーションに失敗しました。
45
+ ```
46
+ def create_company_params
47
+ params.require(:company).permit(
48
+ ).tap do |v|
49
+ v[:price] = v[:price].to_i
50
+ end
51
+ end
52
+ ```
44
53
 
45
54
  なぜバリデーションの最大文字数が、モデルに設定したものと差異があるのか、わかりません。
46
55
 

1

修正

2021/10/30 22:03

投稿

katahik
katahik

スコア79

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  モデルにvalidatesを設定して、バリデーションを行っていますが、最大文字数のバリデーションが正常に動きません
4
4
  company.rb
5
5
  ```
6
- validates :price, length: {maximux: 23}
6
+ validates :price, length: {maximum: 23}
7
7
  ```
8
8
  このように記述して、フォームから
9
9
  23文字(10000000000000000000000)入力した際にバリデーションに引っかかります。