質問編集履歴
3
タイトル修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rails(mysql)に追加したboolean型フィールド
|
1
|
+
rails(mysql)に追加したboolean型フィールドの更新がうまくいかない
|
test
CHANGED
@@ -2,17 +2,15 @@
|
|
2
2
|
|
3
3
|
ruby on rails(データベースはmysql)で
|
4
4
|
|
5
|
-
フラグ管理をしたいと考えているのですが、boolean型のカラムの中身の更新がうまくできず困っています。
|
5
|
+
フラグ管理をしたいと考えているのですが、boolean型のカラムの中身の更新(切替)がうまくできず困っています。
|
6
6
|
|
7
7
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
やってみたことを述べると、
|
11
12
|
|
12
|
-
|
13
|
-
boolean型のカラムを追加、カラムを追加したモデルファイルにフラグの定義を書いてenum(railsのフラグ管理機能)を
|
13
|
+
まずboolean型のカラムを追加、カラムを追加したモデルファイルにフラグの定義を書いてenum(railsのフラグ管理機能)を使えるようにしました。
|
14
|
-
|
15
|
-
使えるようにしました。
|
16
14
|
|
17
15
|
|
18
16
|
|
@@ -48,6 +46,8 @@
|
|
48
46
|
|
49
47
|
```
|
50
48
|
|
49
|
+
次にboolean型のフィールドの中身を更新するためのコードをrailsコンソールで試してみました。
|
50
|
+
|
51
51
|
trueへの書き換えは、
|
52
52
|
|
53
53
|
```ryby
|
@@ -62,13 +62,13 @@
|
|
62
62
|
|
63
63
|
```
|
64
64
|
|
65
|
-
という風にすればで
|
65
|
+
という風にすればbatch_flagのフィールドがtrue(データベース上ではprocessing_onと表示)になるのですが、
|
66
66
|
|
67
|
-
falseの場合、上記の書き方だとnullになってしまうらしく、not_null制約に引っかかってロールバックされて
|
67
|
+
falseの場合、上記の書き方だとnullになってしまうらしく、not_null制約に引っかかってロールバックされて更新することができません。
|
68
68
|
|
69
|
-
|
69
|
+
```ruby
|
70
70
|
|
71
|
-
|
71
|
+
#失敗したコード。結果がnullになってしまう
|
72
72
|
|
73
73
|
Account.order(:id).each do |account|
|
74
74
|
|
@@ -90,7 +90,7 @@
|
|
90
90
|
|
91
91
|
|
92
92
|
|
93
|
-
どうすれば、boolean型の
|
93
|
+
**どうすれば、boolean型のフィールドをfalseに書き換えることができるのか**、
|
94
94
|
|
95
95
|
教えて頂ければ幸いです。
|
96
96
|
|
2
タイトル修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rails(mysql)にboolean型を
|
1
|
+
rails(mysql)に追加したboolean型フィールドをfalseに更新しようとするとnullになってしまう
|
test
CHANGED
File without changes
|
1
エラー文の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -68,6 +68,26 @@
|
|
68
68
|
|
69
69
|
更新することができません。
|
70
70
|
|
71
|
+
```ryby
|
72
|
+
|
73
|
+
Account.order(:id).each do |account|
|
74
|
+
|
75
|
+
account.batch_flag = false
|
76
|
+
|
77
|
+
account.save
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
#エラーメッセージ
|
84
|
+
|
85
|
+
ActiveRecord::NotNullViolation: Mysql2::Error: Column 'batch_flag' cannot be null: UPDATE `accounts` SET `batch_flag` = NULL, `updated_at` = '2018-03-25 00:06:23' WHERE `accounts`.`id` = 14
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
```
|
90
|
+
|
71
91
|
|
72
92
|
|
73
93
|
どうすれば、boolean型のカラムをfalseに書き換えることができるのか、
|