В Rails есть accepts_nested_attributes_for
и fields_for
для этой ситуации:
# model
class Sale < ApplicationRecord
has_many :sale_items
accepts_nested_attributes_for :sale_items
end
, но вам также придется написать код на стороне клиента, который изменит вашу форму (для этого был гем -nested_form
, но он немного устарел), поэтому он отправляет данные в виде sale[sale_items_attributes][1][barcode]=12345
, sale[sale_items_attributes][2][barcode]=4321
и модифицирует контроллер, чтобы разрешить их через строгие параметры (params.require(:sale).permit(... , sale_items_attributes:[:id, :barcode])
).
Trickв том, что рельсы будут сохранять вложенные модели вместе с родительской, также ничего не будет сохранено, если проверка не пройдена ни для одной из моделей.