ActiveRecordでリレーションを組んだカラムの指定方法


`Post`

  * id
  * title
  * body

`Comment`

  * id
  * body
  * post_id

この2つをリレーションで組んだ時、データを取得する際のカラムの指定の仕方がわかりません。

たとえば、`Post.id`,`Post.title`,`Comment.id`,`Comment.body`を取得したい場合はどのように`select()`を書けば良いのでしょうか?




PostクラスとCommentクラスがこんなふうに定義されてるとします。

[code]

    class Post
      has_many :comments
    end
    
    class Comment
      belongs_to :post
    end
    
[/code]

特定のPost1件と、それにひもづくCommentの一覧を表示する場合はこんなふうになります。

[code]

    class PostController < ApplicationController
      def show
        @post = Post.find(params[:id])
      end
    end
    
[/code]

こちらはViewです。(`views/posts/show.html.erb`)

[code]

    Title: <%= @post.title %>
    Body: <%= @post.body %>
    Comments:
    <ul>
    <% @post.comments.each do |comment| %>
    <li><%= comment.body %></li>
    <% end %>
    </ul>
    
[/code]

複数のPostと、それぞれのPostに紐付くCommentの一覧を取得するのであれば、このようになるはずです。

[code]

    posts = Post.all # または Post.where(title: '今日のできごと') など
    posts.each do |post|
      id = post.id
      title = post.title
      body = post.body
      post.comments.each do |comment|
        comment_id = comment.id
        comment_body = comment.body
        post_id = comment.post_id
      end
    end
    
[/code]

ちなみに、関連を持つモデルのデータの作成方法は昔Qiitaで詳しく説明したので、そちらも良かったら参考にしてみてください。

[[初心者向け]
Railsで関連するデータ(親子関係)を保存する方法あれこれ](http://qiita.com/jnchito/items/7f41ff3df900909952db)

