0
我希望能夠在部分中構建查詢,而不需要在Ruby on Rails中稍後再評估最終語句。有沒有辦法推遲ActiveRecord查詢(如Django中的QuerySet)?
具體地說這種行爲(從Djano文檔複製):
一個QuerySet可以被構造,過濾,切片,並 通常通過周圍而不實際命中數據庫。沒有 數據庫活動實際上發生,直到您做一些事情來評估 queryset。
我希望能夠在部分中構建查詢,而不需要在Ruby on Rails中稍後再評估最終語句。有沒有辦法推遲ActiveRecord查詢(如Django中的QuerySet)?
具體地說這種行爲(從Djano文檔複製):
一個QuerySet可以被構造,過濾,切片,並 通常通過周圍而不實際命中數據庫。沒有 數據庫活動實際上發生,直到您做一些事情來評估 queryset。
這是默認情況下的工作方式,除非您訪問結果。也就是說,你可以把這個到你的控制器:
@widgets = Widget.enabled
@widgets = @widgets.where(foo: 'bar')
# ... more conditions here if you want ...
,然後在視圖中把這個:
<%- @widgets.each do |w| %>
...
<% end %>
的DB查詢將不會運行,直到@widgets.each
線。
您可以在控件中使用logger.info
語句來測試該查詢,以查看實際執行查詢的位置。
你說得對。我從來沒有意識到這一點,因爲控制檯不這樣工作。 – Bowen