2016-12-06 2 views
2

가입 내부에 포함, 내부를 지정하는 더 좋은 방법은이 조인 : 그것은 것 같다레일 액티브 사용하고있는 것은 액티브 모델에 포함 된 경우

User.includes(:address).joins(:address) 

지정하는 더 아름다운 방법이 있어야한다 당신은 내부 조인과 포함을 원합니까?

+1

같이 왼쪽 협회

  • 에 가입하는 대신 별도의 쿼리를 사용하기로 결정할 수있다() 포함 둘 다 호출해야합니까? 포함 및 조인이 필요하지 않아야합니다. 주소가있는 레코드 만 원하십니까? '조인 (joins) '은 그것을 제공합니다. 주소 연결이없는 경우에도 모든 사용자를 원하십니까? '포함한다'는 당신에게 그 (것)들을 주어야한다. – toddmetheny

  • +0

    또한 조인에 대해 좀 더 구체적으로 설명해야한다면 SQL 덩어리를 줄 수 있습니다. 하지만 조인의 자연스러운 출력 인 '내부 조인 (JOIN)'에는 그럴 필요가 없습니다. 주제에 대한 문서는 다음과 같습니다. http://apidock.com/rails/ActiveRecord/QueryMethods/joins –

    +1

    The : includes는 사전로드 또는 열심히 연결을로드하지만, 조인은 수행하지 않습니다. 따라서 연관을로드하고 내부 조인을 지정하려는 경우 이것이 내가 제안한 최상의 솔루션입니다. 아주 아름다운 코드는 아닙니다. –

    답변

    1

    Tom Rossi가 질문의 댓글 섹션에서 설명했듯이. 당신은 당신이 포함() 또는 eager_load()를 사용해야 데이터를 미리로드하려면

    • 당신은 내부와 주소 테이블에 가입하려면

      는 조인을 사용한다 협회()
    • 가입 할 수 있습니다. 개인적으로 eager_load() 함수, 을 선호한다. 왜냐하면 왼쪽 조인을 사용할 것이기 때문이다. 당신이 내부 사용에 가입하고 방금 두 가지 방법을 결합하여 데이터를 미리로드하려면 왜 당신을이 경우 당신에