현재로드하는 데 11 초 걸리는 페이지가 있습니다. 글 머리 기호 젬을 사용하여 N + 1 쿼리가 발생한 위치를 찾을 수 있습니다. 그게 내 일부 출력을 제공하지만, 정말 그걸로 뭘 해야할지 모르겠다. 연관되어N + 1을 멈추기 위해 열심히로드하기 - 레일
GET /events/1679/dashboard
USE eager loading detected
RSVP => [:tickets]
Add to your finder: :includes => [:tickets]
Call stack
/Users/cameronbass/Desktop/Work/blackbird-rsvp/app/decorators/rsvp_decorator.rb:54:in `tickets?'
/Users/cameronbass/Desktop/Work/blackbird-rsvp/app/views/accepted_rsvps/_list.html.erb:33:in `block in _app_views_accepted_rsvps__list_html_erb___1211423417683052584_70339569780320'
그리고이 선 다음
def tickets?
rsvp.tickets.any?
end
에 넣어달라고 말하고 : 여기에 총알의 출력은
has_many :tickets, through: :attendees
attendee.rb
has_one :ticket
일반적으로 이것은 이러한 것들의 목록을 반복하고 각각에 '티켓'이라고 부르는 것을 말합니다. 이 코드는 표시되지 않지만 아마도이 목록이 무엇이든간에 여러 가지 목록을 가지고있을 것입니다. – tadman
로그를보세요! 한 요청에 대해 데이터베이스가 여러 번 히트되는 것을 볼 때 아마 N + 1 상황이 발생할 것입니다. 열망하는로드를 사용하여 db를 한 번만 누르면 관련 테이블을 가져 와서 레코드를로드 할 수 있습니다. – bkunzi01
이런 질문을 볼 때, 나는이 답변에 링크해야한다고 느낀다 : http://stackoverflow.com/a/26251892/525478. YMMV –