私のContract
フォームでは、ユーザーがUnit
ドロップダウン ボックスから 1 つを選択するか、チェック ボックスのグループから複数のユニットを選択できるようにしています。ドロップダウン フィールドには名前が付けられunit_id
、複数のチェックボックスには名前が付けられmulti_unit_ids[]
ます。(これらのオプションは両方ともページにあるため、同じ名前を使用することはできません)。
選択したユニットごとに 1 つの契約が作成されます。したがって、ユニットが 1 つだけ選択された場合、そのユニットは 1 つだけContract
作成されunit_id
ます。ただし、複数のユニットを選択すると、Contract
作成された各ユニットのすべてのデータは同じになりますが、それぞれに独自のユニット ID (multi_unit_ids 配列から取得) があります。
create
私のメソッドのコードは次のcontracts_controller.rb
とおりです。
# Multiple Units? Multiple Contracts
if params[:multi_unit_id]
unit_arr = params[:multi_unit_id]
else
unit_arr = [*params[:contract][:unit_id]]
end
# Loop through units
unit_arr.each do |unit_id|
# Assign the unit id to the params for easy creation
params[:contract][:unit_id] = unit_id
@contract = Contract.new(params[:contract])
# ... other code here
@contract.save
end
これはすべてとても面倒です!これを行うためのより良い方法は何ですか?