回答編集履歴

2

追記

2021/12/16 07:48

投稿

winterboum
winterboum

スコア23567

test CHANGED
@@ -13,3 +13,43 @@
13
13
  でしたらbatchで
14
14
 
15
15
  `User.where(体脂肪率がA範囲).update_all(group_id: Aのgroup.id)`
16
+
17
+
18
+
19
+ 追記
20
+
21
+ groupの指定を、プログラムcodeにID直打ちで指定するのは問題がでます。そのIDになる保証はありますか?
22
+
23
+ ということでGroupにname とか一 code とか定義してそれで指定しましょう。
24
+
25
+ 例えば
26
+
27
+ ```
28
+
29
+ class Group
30
+
31
+ GroupA, GroupB, ,,,,, = %w[group_a group_b ,,,,,].map{|code| find_by(code: code) }
32
+
33
+ ```
34
+
35
+ としておきます。
36
+
37
+ も一つ定義しておくか
38
+
39
+ ` Condition = [[0,18,GroupA], [18,20,GroupB], ,,,]`
40
+
41
+ で、
42
+
43
+ バッチでは `Group.update_group` とでもして class Group に
44
+
45
+ ```
46
+
47
+ Condition.each{ | ge,lt,group|
48
+
49
+ User.where("bmi >= ? and bmi < ?",ge,lt).update_all(group_id: group.id)
50
+
51
+ }
52
+
53
+ ```
54
+
55
+ でしょうか

1

追記

2021/12/16 07:48

投稿

winterboum
winterboum

スコア23567

test CHANGED
@@ -3,3 +3,13 @@
3
3
 
4
4
 
5
5
  before_save で `self.group = 体脂肪から求めたgroup` としてはどうでしょう
6
+
7
+
8
+
9
+ 追記
10
+
11
+ 1週間ごとか
12
+
13
+ でしたらbatchで
14
+
15
+ `User.where(体脂肪率がA範囲).update_all(group_id: Aのgroup.id)`