質問編集履歴

3

タイトル修正

2018/03/25 03:12

投稿

zendendo
zendendo

スコア43

test CHANGED
@@ -1 +1 @@
1
- rails(mysql)に追加したboolean型フィールドをfalseに更新しよとするとnullにってしまう
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
- ```ryby
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型のカラムをfalseに書き換えることができるのか、
93
+ **どうすれば、boolean型のフィールドをfalseに書き換えることができるのか**
94
94
 
95
95
  教えて頂ければ幸いです。
96
96
 

2

タイトル修正

2018/03/25 03:12

投稿

zendendo
zendendo

スコア43

test CHANGED
@@ -1 +1 @@
1
- rails(mysql)にboolean型を追加したけど、更新するとnullになってしまう
1
+ rails(mysql)に追加したboolean型フィールドfalseに更新しようとするとnullになってしまう
test CHANGED
File without changes

1

エラー文の追加

2018/03/25 03:02

投稿

zendendo
zendendo

スコア43

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に書き換えることができるのか、