質問

ユーザー、およびユーザーhas_manyの投稿belongs_toのAポスト。
また、トピックbelongs_toのAポスト、およびトピックhas_manyの記事ます。

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_nameとユーザーのuser_photoをしたことはないまあ、。しかし、これらの属性は、Userモデルに保存され、トピックに縛られていません。だから私は、それまでの設定についてどのように行くか?

Postモデルは、2つの外部キー、トピックのためのユーザーのために1つずつを持っているので、多分それはすでにと呼ばれることができますか?

または、多分これはassiociationから「一方通行」にhas_manyのいくつかの並べ替えです。ポストは、モデルに参加されるだろう、とトピックはHAS_MANYますように:ユーザー、:=>を通じて:投稿。しかし、これの逆は真ではありません。ユーザーが行うようにしないにhas_many:トピック

関連かかわら:

だから、has_manyのことには、このさえ必要がでしょうか?私は、コントローラは、ポストとギブトピックについてそのポストのユーザーの両方を呼び出すためにどのようになるかについて混乱してほんの少しだと思います。

編集:真剣に計量していることすべてに感謝、私は私のコントローラのための彼のコードを使用するので、私はTALの答えを選びました;。しかし、私は同じように簡単に選択している可能性のいずれかJ。のか、ティムの代わりに。同様にあなたの両方をありがとうございます。これは、実装がとても気に簡単でした。私は今日は、レールと私の恋愛の始まりをマークするかもしれないと思う。

役に立ちましたか?

解決

何がしたいことは、ポストの著者のユーザ名を表示している場合は、

さて、たとえば、あなたのような何かを行うことができます(テストしていないが、動作するはずです):

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

それはすべての記事に対して1つの要求を生成し、ユーザー用、およびポストのコレクションは、ユーザーが持つべき必要があります。

(ここではHAML)ビュー内の

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

他のヒント

トピックとその投稿を表示するときに、あなたがuser_nameuser_photoを取得することができます...

のような何かます:

@topic.posts.each do |post|
   user_name = post.user.name
   user_photo = post.user.photo
end
それは簡単です。申し訳ありませんが私は非常によくあなたの質問を理解していない場合ます。

私が正しくあなたの質問を理解していれば、

、いいえ、has_manyの:協会を通じてはここでは必要ありません。

あなたがトピックに投稿されたすべてのユーザー(ポスト情報をスキップ)のリストを表示したい場合は、それが役立つだろう。

あなたは+ nは1つのクエリを防ぐために、かかわらず、熱心な負荷への投稿からユーザーをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top