回答編集履歴

3

追記

2021/06/08 01:35

投稿

asm
asm

スコア15147

test CHANGED
@@ -13,3 +13,89 @@
13
13
 
14
14
 
15
15
  等と、最初の要素だけを配列に入れるなりしないといけません。
16
+
17
+
18
+
19
+ ---
20
+
21
+
22
+
23
+ [参考までにもうちょい新しいissueでのコメント](https://github.com/mbleigh/seed-fu/issues/10#issuecomment-179200)を見た感じ
24
+
25
+
26
+
27
+ ```ruby
28
+
29
+ def tag_ids(display_order)
30
+
31
+ case display_order
32
+
33
+ when (1..14)
34
+
35
+ [QuestionnaireTag.find_by(display_order: 1), QuestionnaireTag.find_by(display_order: 2)]
36
+
37
+ when (15..35)
38
+
39
+ [QuestionnaireTag.find_by(display_order: 1), QuestionnaireTag.find_by(display_order: 3)]
40
+
41
+ when (36..68)
42
+
43
+ [QuestionnaireTag.find_by(display_order: 9), QuestionnaireTag.find_by(display_order: 6)]
44
+
45
+ when 69
46
+
47
+ [QuestionnaireTag.find_by(display_order: 9), QuestionnaireTag.find_by(display_order: 4)]
48
+
49
+ when 70
50
+
51
+ [QuestionnaireTag.find_by(display_order: 9), QuestionnaireTag.find_by(display_order: 5)]
52
+
53
+ when (71..100)
54
+
55
+ [QuestionnaireTag.find_by(display_order: 9), QuestionnaireTag.find_by(display_order: 8)]
56
+
57
+ end
58
+
59
+ end
60
+
61
+
62
+
63
+ CSV.table("#{Rails.root}/db/fixtures/csv/questionnaire_form.csv").each do |record|
64
+
65
+ next if record[:id].nil?
66
+
67
+ QuestionnaireForm.seed do |s|
68
+
69
+ s.id = record[:id]
70
+
71
+ s.title = record[:title]
72
+
73
+ s.display_order = record[:display_order]
74
+
75
+ s.questionnaire_id = 1
76
+
77
+ s.questionnaire_tags << tag_ids(record[:display_order])
78
+
79
+ end
80
+
81
+ tags = tag_ids(record[:display_order])
82
+
83
+ tags.each do |t|
84
+
85
+ QuestionnaireFormsTag.seed do |s|
86
+
87
+ s.questionnaire_tag = t
88
+
89
+ s.questionnaire_form = QuestionnaireForm.find(record[:id])
90
+
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+
97
+ ```
98
+
99
+
100
+
101
+ みたいに分けるようですね

2

修正

2021/06/08 01:35

投稿

asm
asm

スコア15147

test CHANGED
@@ -1 +1,15 @@
1
+ seed_fuの`seed`メソッドは仕様変更したようで[モデルインスタンスの**配列**を返します。](https://rubydoc.info/gems/seed-fu/SeedFu/Seeder#seed-instance_method)
2
+
1
- ちょいいったん消
3
+ なのでブロックを渡て一つだけ作成る場合は
4
+
5
+
6
+
7
+ ```ruby
8
+
9
+ questionnaire,* = QuestionnaireForm.seed do |s|
10
+
11
+ ```
12
+
13
+
14
+
15
+ 等と、最初の要素だけを配列に入れるなりしないといけません。

1

修正

2021/06/08 01:22

投稿

asm
asm

スコア15147

test CHANGED
@@ -1,21 +1 @@
1
- [has_and_belongs_to_many関連付け](https://railsguides.jp/association_basics.html#has-and-belongs-to-many関連付け)のテーブル構造を見ると
2
-
3
- 中間テーブルの名前が`questionnaire_forms_questionnaire_tags`になるはずです。
4
-
5
- 実際はなんやかんやあって`questionnaire_forms_tags`になるようですが
6
-
7
- 生成ルールがややこしいのでmigrationでは[create_join_table](https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-create_join_table)を使った方がいいですね。
8
-
9
-
10
-
11
-
12
-
13
- 今回の場合は、中間テーブルを`questionnaire_form_tags`にしたいようなので
14
-
15
- - `has_many :through`を用いる
16
-
17
- - [join_table](https://railsguides.jp/association_basics.html#join-table)オプションを使う
18
-
19
-
20
-
21
- らかです。
1
+ ょい、いったん消します。