2017-10-10 36 views
0

所以我目前使用下面的命令來加入和查詢我的表 - 找一個之中我訂單其中orderable_id = applicable_product_item_idOrderItem的 TOTAL_PRICE = 0且buyer_id = CURRENT_USER如何查詢CREATED_BY領域的ActiveRecord的關係

Order.joins(:items) 
    .where(order_items: {id: OrderItem.where(orderable_id: applicable_product_item_id)}) 
    .where(total_price: 0) 
    .where(buyer_id: current_user) 

此所有工作正常,但現在我想進一步查詢,我想知道,如果它發現的順序有created_at日期>searchable_created_by_date

我已經使用在查詢另一個。凡試圖以及陣列中選擇所述。首先,並進一步查詢該查詢即= above_query.first

然後

query.where("created_at > ?", searchable_created_by_date) 

,但我得到

Undefined method where for #<Order:0x007fbc8d8edf90> 
+2

當您執行'query = above_query.first'時,您不再有可鏈式查詢。這就是爲什麼你得到'沒有方法錯誤'。所以,這是一個不行。當你試圖鏈接另一個'.where'語句時,你得到了什麼? – jvillian

+0

你可以顯示查詢獲取初始化的位置嗎? – krishnar

+0

@jvillian當我鏈的。我得到列引用「created_at」是模棱兩可的 –

回答

1

furman87的評論的權利的聲音對我說:

你必須指定表中的WHERE子句 - 。哪裏( 「orders.created_at>?」,searchable_created_by_date)

您也可以嘗試:

Order. 
    where(total_price: 0). 
    where(buyer_id: current_user). 
    where("created_at > ?", searchable_created_by_date). 
    joins(:order_items). 
    where(order_items: {id: OrderItem.where(orderable_id: applicable_product_item_id)}) 

認爲created_at聲明前聲明將消除查詢 - 但我不是100%確定。

此外,我會想你會做joins(:order_items)。但是,我想這取決於你如何建立你的關聯。如果joins(:items)適合你,那麼給你更多的權力! (並且忽略評論。)

+1

謝謝guys - orders.created_at消除了歧義 –