※TechAcademyに実際に寄せられた質問に現役エンジニアのメンターが回答しました
田島メンター!Railsで複数のレコードを一括登録する方法をネットで調べながら試しているのですですが、うまくいきません。教えてもらっていいですか?
詳しく状況を教えてもらっていいかな?
質問
Ruby on Railsで複数のレコードを一括登録したいが、 ネットで見ていてもどのやり方でスタートしていいのかわかりません。
実現したいこと
Ruby on Railsで、競馬の実績をデータベースに登録していきたい レース日付、レース場、レース番号などの共通項目もあるが、それ以外は 各々のデータなので別々のレコードとして登録したい。
フォームのイメージ
1: 共通項目: レース日付、レース場、レース番号
2: 各々データ(買い目1):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
3: 各々データ(買い目2):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
4: 各々データ(買い目3):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
5: 各々データ(買い目4):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
6: 各々データ(買い目5):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
7: 各々データ(買い目6):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
8: 各々データ(買い目7):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
9: 各々データ(買い目8):式別(賭け方)、1頭目(着)番号、2頭目(着)番号、3頭目(着)番号、投票金額
10:submit
自分で試したこと
例えば、ネットには以下のような記事がありました
メンターからの回答
試したことの2つ以外の方法があります。
まず、実装しようとしている画面は、親レコードと子レコードを一緒に更新する画面、と呼ばれています。
この手の画面は、accepts_nested_attributes_for という機能を使うと簡単に実装できます。
また、調べていただいた1と2の選択肢についてコメントします。
1の「Railsアプリケーション構築ガイド」のコードは、accepts_nested_attributes_for を使わない方法で実装しているためコード量が多くなっています。コード量が多くなると不具合が混ざりやすいのでおすすめしせん。まずは accepts_nested_attributes_for で実装して不都合があったら「1」の実装をしましょう。
2の activerecord-import は 「1」の実装に組み込む時に使えるgemです。複雑さが増す変わりに組み込むと処理速度があがります。 しかし、accepts_nested_attributes_for の実装で十分に速度が出ているなら手を出す必要はありません。
TechAcademyでは現役Railsエンジニアのメンターが質問にすぐ回答します。
まずは無料体験でメンターに相談してみましょう。