「Rails」form_withを用いて、1つのカラムに対して複数のデータを配列に入れた状態でpostしたいです。

お世話になっております。
Railsで開発をしている者ですが、解決できない事項がございましたので、ご質問をさせていただきます。

前提・実現したいこと

Railsで投稿機能を実装しようとしています。

  • Rails -> 6.1.6
  • MySQL -> 8.0.29

現状の投稿フォームは下記の通りです。
イメージ説明

発生している問題・エラーメッセージ

投稿をDBに保存する際に

8:00  出勤
12:00 昼休憩
17:00 退社

上記のように
"time"カラム

"content"カラム
に複数のデータを配列で持たせるような設計にしたいのですが、現状は「17:00 退社」の部分しかDB上に保存されません。 

コードが下記の通りです。

post_form.html.erb

<%= form_with(model: @micropost, local: true) do |f| %> <%= render 'shared/error_messages', object: f.object %> <div class="field"> <%= f.label :occupation, "職種" %> <%= f.text_field :occupation %> <%= f.label :job, "職業(任意)" %> <%= f.text_field :job %> <%= f.label :time, "時間" %> <%= f.time_field :time %> <%= f.label :content, "業務内容" %> <%= f.text_area :content, placeholder: "ここに入力" %>        #↓↓↓↓↓↓↓↓↓↓のみDBに反映される <%= f.label :time, "時間" %> <%= f.time_field :time %> <%= f.label :content, "業務内容" %> <%= f.text_area :content, placeholder: "ここに入力" %> </div> <%= f.submit "投稿", class: "btn btn-primary" %> <% end %>

現状のコードのままpostすると、二つある"time"と"content"のうち、下の方のデータのみDBに登録されます。

※フロントエンドの話になりますが、最終的には、2つ以上"time"と"content"を投稿する場合は「追加」ボタンをクリックすることで、フォームが追加表示されるようにUIを整えたいと考えています。

自分で調べたことや試したこと

このエラーの解決策を検索すると、

  • 別々のテーブルで同名のカラムを両方のテーブルに同時保存
  • 1つのカラムに配列でデータを持たせる

などの記事は多数存在しましたが、私の疑問点とは記事の内容が異なるものでした。

調べていく中で、DBに複数のデータを保持させるには配列を用いるということは予測できたのですが、

  • form_withでpostする際に、配列でpostすることはできるのか
  • そもそも、DB設計自体を見直すべき内容なのか

この辺りについて考えているうちに八方塞がりになってしまいました。

お忙しい中お手数ですが、ご教授いただけると幸いです。

コメントを投稿

0 コメント