1

게시물이 belongs_to 사용자이고, 사용자 has_many 게시물이 있습니다.
게시물도 belongs_to Topic이고, 주제는 has_many Posts입니다.has_many : through association일까요?

class User < ActiveRecord::Base 
    has_many :posts 
end 

class Topic < ActiveRecord::Base 
    has_many :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :topic 
end 

글쎄, 그건 설정하는 매우 간단하고 아주 쉽게,하지만이 주제를 표시 할 때, 나는 단지 그 주제에 대한 게시물을 모두 할뿐만 아니라하지 _ 이름과 만든 사용자의 user_photo 그 포스트. 그러나 이러한 특성은 사용자 모델에 저장되며 항목에 연결되지 않습니다. 그럼 내가 어떻게 세팅 할까?

Post 모델에 User와 Topic의 두 외래 키가 있기 때문에 이미 호출 할 수 있습니까?

또는 어쩌면 이것은 일종의 "편도"has_many assiociation입니다. 포스트처럼 조인 모델이 될 것이고 토픽은 has_many : users, : through => : posts가 될 것이다. 그러나 이것의 반대는 사실이 아닙니다. 사용자가 has_many : topics와 같은 것은 아닙니다.

그렇다면 has_many 일 필요가 있습니다. 나는 컨트롤러가 포스트의 포스팅과 사용자 모두에게 전화를해서 포기할 주제에 대해 어떻게 보이는지 조금 혼란스러워합니다.

편집 : 진심으로 감사합니다. 나는 컨트롤러에 코드를 사용했기 때문에 탈의 답변을 선택했습니다. 그러나 나는 j. 또는 tim을 대신 쉽게 선택할 수 있습니다. 감사합니다. 이것은 구현하기 매우 간단했습니다. 나는 오늘 내가 레일과 나의 연애 사건의 시작을 알릴 수 있다고 생각한다.

@topic.posts.each do |post| 
    user_name = post.user.name 
    user_photo = post.user.photo 
end 

은 간단합니다

답변

2

음 :

@posts = topic.posts.all(:include => :user) 

그것을 하나를 생성해야 모든 게시물에 대한 요청, 사용자에 대한 요청, 게시물 모음에는 사용자가 있어야합니다. 뷰 (여기 HAML)에서

:

- @posts.each do |post| 
    = post.user.name 
    = post.body 
3

당신은 같은 user_nameuser_photo 주제와 게시물을 표시 ...

뭔가를 얻을 수 있습니다. 미안하지만 당신의 질문을 잘 이해하지 못했다면.

당신이 원하는 것은 예를 들어, 당신이 뭔가를 할 수 있습니다 (테스트하지,하지만 작동합니다), 게시물 작성자의 사용자 이름을 표시하는 경우
2

내가 제대로 질문을 이해한다면은, 아니, has_many : 협회를 통해 여기에 필요하지 않습니다.

주제에 게시 된 (게시 정보를 건너 뛰는) 모든 사용자의 목록을 표시하려면 도움이 될 것입니다.

n + 1 개의 쿼리를 방지하기 위해 게시물에서 사용자를 열렬하게로드하고 싶을 것입니다.

+0

안녕하세요, Tim, 당신은 그것에 대해 자세히 설명해 주시겠습니까? 당신 has_many : through 협회는 필요하지 않지만 나중에 도움이 될 것이라고했습니다. 그러나 나는 당신이 그것이 실제 Post.message가 정확하기를 원하지 않는다는 것을 의미한다고 믿습니다. 이렇게 게시 된 컨트롤러 코드를 사용하면 가장 빠른/가장 빠른 쿼리가 수행됩니다. – GoodGets