我正在嘗試搜索Order已完成的所有LineItems。Spree,Rails LineItems只能獲得屬於已完成訂單的訂單
# /spree/order.rb
def self.complete
where.not(completed_at: nil)
end
我想:
product.orders.complete.map { |o| o.line_items }.flatten
但它返回一個數組,我不能做.where(variant_id: ID)
。
或:
product.orders.includes(:line_items).complete.where(line_items: { variant_id: 263})
但它說:PG::UndefinedTable: ERROR: missing FROM-clause entry for table "line_items"
然後我試着用:
product.line_items.includes(:order).where(variant_id: ID).where.not(order: { completed_at: nil })
,並返回ActiveRecord::ConfigurationError: Association named 'orders' was not found on Spree::LineItem; perhaps you misspelled it?
這種方式是也沒關係:product.orders.complete ...
但不知道如何通過搜索LineItems它的variant_id。
我該如何解決?如何返回屬於已完成訂單的所有產品的LineItem?
非常感謝!
謝謝大家,稍後嘗試一下,可能會比我的解決方案更快。 – muzykabart