Я столкнулся с чем-то похожим в проекте, над которым я сейчас работаю.Лучшим (и самым простым и долгосрочным) решением было, безусловно, создание совершенно новой модели / контроллера.
*Order
status (should be an int or enum probably)
total (should loop through all order rows and total)
payment (should be an int or enum probably)
has_many order_rows
**OrderRow
belongs_to Order
item_sku
item_name
item_descr
item_cost
etc. etc.
Это позволяет вам легко искать не только предметы, но и заказы, которые включают предметы по имени или артикулу,заказы, которые включают элементы по описанию.Ваши итоги являются динамическими.Вы можете получить общее количество заказов или номеров перемещений для каждого элемента.Намного проще создавать и обновлять заказы.
Преимущества сохраняются.
Это может быть легко определено;scope: this_orders_rows, -> (order_id) {where (order_id: order_id)}
И это избавляет вас от необходимости каждый раз анализировать хэши и массивы.
Чтобы получить техническую информацию об этом, вашorder_controller должен контролировать ТОЛЬКО ваши заказы.Если вы начнете добавлять кучу другого кода для чтения массивов, он будет ОЧЕНЬ загроможден.Всегда лучше перенести это в другую область.