前提
【環境】
開発環境 Windows10
Ruby バージョン ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x64-mingw32]
rails バージョン Rails 7.0.4
railsチュートリアルのコードをベースにして社員マスタを作成しております。
下図の「社員情報」と「部署名称」及び「在籍期間」を保持した部署履歴(中間テーブル)を作成し、
ユーザ新規作成、編集時に同テーブルを更新したいと考えております。
実現したいこと
ユーザ編集時に、部署テーブルを必要に応じて追加するようにしたい。
該当のソースコード
user_controller.rb
ruby
1class UsersController < ApplicationController 2 def new 3 @user = User.new 4 #bushoを相互登録するため追加↓ 5 @user.user_bushos.new 6 end 7<省略> 8 def edit 9 @user = User.find(params[:id]) 10 #bushoを相互登録するため追加↓ 11 @user.user_bushos.new 12 end 13<省略>
user.rb
ruby
1class User < ApplicationRecord 2 has_many :user_bushos 3 accepts_nested_attributes_for :user_bushos, allow_destroy: true 4 has_many :bushos, through: :user_bushos 5<省略>
_user_inffo.html.erb ※users/new、edit.html.erbからレンダリング
ruby
1 <%= form_with model: @user do |f| %> 2<省略> 3 <%= f.fields_for :user_bushos do |ub| %> 4 <% i = 1 %> 5 <div class="form-group row"> 6 <div class="col-md-1 offset-md-3"> 7 <%= ub.label :busho_id, "部署 #{i}" %><br> 8 <%= ub.collection_select :busho_id, 9 Busho.all, 10 :id,:busho_name, 11 class: 'form-select' %> 12 </div> 13 <div class="col-md-2"> 14 <%= f.label :addbusho_date, "所属開始" %><br> 15 <%= ub.date_field :addbusho_date, class: 'form-control' %> 16 </div> 17 <div class="col-md-2"> 18 <%= f.label :delbusho_date, "所属終了" %><br> 19 <%= ub.date_field :delbusho_date, class: 'form-control' %> 20 </div> 21 </div> 22 <% i += 1 %> 23 <% end %> 24<省略> 25 <% end %>
現状
現状は以下画面の通り、ユーザ編集の都度に部署履歴(中間テーブル)が追加される状況になります。
お力添えいただけると幸いです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/28 09:05 編集
2022/12/28 22:33