1
爲什麼Ruby on Rails框架不提供一種方法來理解我正在執行的操作是否會導致查詢?Rails ORM查詢結果
採取的是有很多文章
在我看來,我會做一個用戶:
<% @user.posts.each do |p| %>
<%= p.title %>
<% end %>
我也沒辦法,看在我的控制器我做
@user = User.find(params[:id]).includes(:posts)
即急於加載,並導致一個查詢,左連接,或者如果我這樣做:
@user = User.find(params[:id])
導致N + 1個查詢
如果應用程序是簡單的,不會有任何問題,但讓我們一個更大的應用程序。 也許查詢方法不在控制器中,而是在模型中。也許它甚至不在模型中,但在一個問題中(一個外部模塊,包括我的模型)。
換句話說,我的印象是失去了控制框架在我的數據庫中所做的事情。
您是否發現此問題的任何解決方案?
您可以在應用程序中添加子彈寶石將提示N + 1個查詢 – Icicle
事實上,'includes'不會引發查詢與左檢查的加入,但兩個查詢。 http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations – Iceman
你也可以用這個寶石來幫助你:https://github.com/flyerhzm/bullet – juanitofatas