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

回答編集履歴

2

追記

2021/12/16 07:48

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -5,4 +5,24 @@
5
5
  追記
6
6
  1週間ごとか
7
7
  でしたらbatchで
8
- `User.where(体脂肪率がA範囲).update_all(group_id: Aのgroup.id)`
8
+ `User.where(体脂肪率がA範囲).update_all(group_id: Aのgroup.id)`
9
+
10
+ 追記
11
+ groupの指定を、プログラムcodeにID直打ちで指定するのは問題がでます。そのIDになる保証はありますか?
12
+ ということでGroupにname とか一 code とか定義してそれで指定しましょう。
13
+ 例えば
14
+ ```
15
+ class Group
16
+ GroupA, GroupB, ,,,,, = %w[group_a group_b ,,,,,].map{|code| find_by(code: code) }
17
+ ```
18
+ としておきます。
19
+ も一つ定義しておくか
20
+ ` Condition = [[0,18,GroupA], [18,20,GroupB], ,,,]`
21
+ で、
22
+ バッチでは `Group.update_group` とでもして class Group に
23
+ ```
24
+ Condition.each{ | ge,lt,group|
25
+ User.where("bmi >= ? and bmi < ?",ge,lt).update_all(group_id: group.id)
26
+ }
27
+ ```
28
+ でしょうか

1

追記

2021/12/16 07:48

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -1,3 +1,8 @@
1
1
  User:belongs to group ですね?
2
2
 
3
- before_save で `self.group = 体脂肪から求めたgroup` としてはどうでしょう
3
+ before_save で `self.group = 体脂肪から求めたgroup` としてはどうでしょう
4
+
5
+ 追記
6
+ 1週間ごとか
7
+ でしたらbatchで
8
+ `User.where(体脂肪率がA範囲).update_all(group_id: Aのgroup.id)`