두 가지 모델이 있다고 가정 해 보겠습니다.
class Post < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
end
그런 다음 각각 3 개의 댓글이있는 2 개의 게시물을 작성했다고 가정합니다. 두 게시물에 속한 모든 댓글을 가져 오기 위해 두 게시물의 AR 관계에 대해 호출 할 수있는 쿼리가 있습니까?
나는 할 수있을 것이다:
@posts = Post.where(id: [1,2])
@comments = []
@posts.each do |post|
@comments += post.comments
end
그러나 그것은 AR 관계가 아니며 이것은 단순한 쿼리 여야하는 것처럼 보입니다.
같은 것이 @posts.comments
있습니까?
귀하의 질문은 "그 두 게시물에 속합니다"에 대해 이야기하지만을 사용하는 것이 좋습니다 Post.all
. 따라서 모든 게시물에 대한 댓글을 쫓는 것인지 아니면 두 게시물에 대한 것인지 명확하지 않습니다.
두 게시물에 대한 댓글을 얻는 방법은 다음 1
과 2
같습니다.
Comment.where post_id: [ 1, 2 ]
...하지만 ID를 모르는 경우 원하는 쿼리를 사용하여 관심있는 게시물을 반환하여 다음과 같은 하위 선택을 만들 수 있습니다.
Comment.where post: Post.where(owner: owner)
Comment.where post: Post.where("title LIKE ?", "%abc%")
또는 댓글에서 조인을 사용하여 다음과 같이 게시 할 수 있습니다.
Comment.joins(:post).where(posts: { owner: owner })
그래서 제 생각에 당신이 요구하는 것을하기위한 몇 가지 옵션이 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다