объем рельсов, возвращающих одну запись - PullRequest
3 голосов
/ 20 сентября 2011

У меня есть объект 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, потому что это может вызвать ошибку, если набор записей пуст.

Есть предложения?

1 Ответ

1 голос
/ 20 сентября 2011

используйте find_or_create_by_warehouse_id_and_product_id или find_or_initialize_by_warehouse_id_and_product_id. см. это для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...