joins로 테이블을 연결할 때의 2 종류의 방법 【해시】

테이블 구조



중간 테이블을 이용하여 자신이 좋아하는 books를 일람으로 볼 수 있도록 하고 싶다.
테이블 구조는 아래 같은 느낌입니다.



이것으로 자신이 좋아하는 book 일람을 취하고 싶었을 때, 방법을 모르고 빠졌기 때문에, 각서입니다.

SQL 수를 줄이기 위해 모든 테이블을 연결하고 싶습니다.



joins하지 않고 view 화면이나 each하면 sql이 대량 발행되어 조작이 무거워집니다.
가능한 한 발행하고 싶지 않으므로 joins합니다. 자신이하고 싶은 테이블 합체는 다음과 같은 이미지입니다.


위와 같이 하고 싶다고 생각해 써 보았습니다만. . . . .

연결 방법 1



처음에 자신이 쓴 코드는 이렇게 되었습니다.
Book.joins(:likes, :user).where(user_id: current_user.id)


같아요. . . .
그렇다면,



이렇게 따로따로 합체하는 웃음

이렇게 되면, 이 book을 like한 user라고 하는 흐름으로, 데이터를 취하러 갈 수 없습니다.

그럼 어떻게 하면 좋을까 하면. . . . .

연결 방법 2


Book.joins({:likes => :user}).where(user_id: current_user.id)


이런 식으로 joins 안에 해시를 씁니다.
그러면 3개의 테이블을 모두 연결할 수 있습니다.

좋은 웹페이지 즐겨찾기