У меня есть два класса Category и order_item, где order_item принадлежит категории.
Я хочу добавить уникальные элементы «категории» в переменную класса, которая представляет собой массив «категорий» и представлена переменной класса массива @@categoriesList, каждый раз, когда среди экземпляров обнаруживается новая категория. переменные.
Это то, что я пробовал.
class OrderItemsController < ApplicationController
@@categoriesList = []
def create
@order_item = OrderItem.new(order_item_params)
if @order_item.save
@total = @order_item.order.total
@orderItemCategory = @order_item.category
if @orderItemCategory.set?
if !(@@categoriesList.include? @orderItemCategory)
@total += @orderItemCategory.price
@@categoriesList.push(@orderItemCategory)
end
........
........
end
Пояснение кода:
Я не хочу, чтобы цена следующего экземпляра order_item учитывалась, если уже была учтена цена предыдущего order_item, относящегося к цене той же категории.
Например: Яйцо и Молоко относятся к Combo-1. Поэтому я просто хочу учесть цену Комбо-1 один раз, а не для каждого экземпляра order_item, т.е. яйца и молока, что удвоило бы общую сумму.
Что я пробовал:
Я нажимаю название категории order_item после того, как его цена была принята во внимание. И когда создается следующий order_item, я проверял, была ли уже записана цена этой категории order_item, проверяя ее в текущей переменной класса @@categoriesList.
Проблема: каждый раз, когда я проверяю переменную класса @@categoriesList, она возвращает пустой список массивов, и предыдущие записи, которые были помещены в этот массив, не отображаются.
Я хочу что-то вроде статической переменной в java, где каждый экземпляр класса использует одну и ту же переменную без фактического обновления данных в переменной для каждого экземпляра.