У меня есть объект Product, который имеет много объектов InventoryCurrent.Раз в месяц все операции с запасами будут суммироваться, и для каждого продукта на каждом складе будет создаваться новая запись InventoryCurrent.Это сделано для того, чтобы система не выполняла сотни вычислений каждый раз, когда запрашивается текущий инвентарь.Я создал область действия from_warehouse следующим образом:
scope :from_warehouse, lambda {|warehouse| where(:warehouse_id =>warehouse) }
Я хотел бы позвонить, чтобы получить текущий инвентарь следующим образом:
product.current_inventories.from_warehouse(2).recent
Это должно вернуть либо самый текущий InventoryCurrentили, если он еще не был создан (потому что продукт был только что добавлен), он должен вернуть новый объект InventoryCurrent с надлежащими набором warehouse_id и product_id.
Проблема в том, что область действия возвращает набор записей, а неодин объект.Я не могу поместить эту область в метод и вызвать .first, потому что это может вызвать ошибку, если набор записей пуст.
Есть предложения?