0

我在两个表之间建立关联时遇到了一些麻烦。我有可以写帖子的用户

这是我的迁移文件:

class LinkUsersAndPosts < ActiveRecord::Migration

  def change
    add_column :posts, :user_id, :integer
    add_index  :posts, :user_id
  end

end

我的模型:

class Post < ActiveRecord::Base
  attr_accessible :content, :title
  belongs_to :user
end

class User < ActiveRecord::Base
  attr_accessible :email, :login, :password, :password_confirmation, :rights
  has_many :posts
end

我的控制器:

class PostsController < ApplicationController
   respond_to :json

   def index
     @posts = Post.includes(:user).all
     respond_with @posts
   end

   def create
     @post = Post.new(params[:post])
     @post.user = current_user

     if @post.save
       render json: @post, status: :created, location: @post
     else
       render json: @post.errors, status: :unprocessable_entity
     end
  end
end

帖子已正确创建,user_id 已设置一切正常。问题是当我想检索包括用户在内的帖子列表时,会检索帖子列表,但除了他的 id 之外,我没有关于用户的任何数据。

回复 :

[
  {
    "content":"jksdjd",
    "created_at":"2013-08-31T09:03:01Z",
    "id":11,"title":"kdjs",
    "updated_at":"2013-08-31T09:03:01Z",
    "user_id":4
  },
  {
    "content":"tez2",
    "created_at":"2013-08-31T09:16:45Z",
    "id":12,
    "title":"test2",
    "updated_at":"2013-08-31T09:16:45Z",
    "user_id":4
  }
]
4

1 回答 1

0

默认情况下,JSON 响应不会返回任何关联的模型。您需要指定要返回的其他模型。所以在你的情况下,你可以这样做:

render json: @post =>  @post.to_json(:include => :user), status: :created, location: @post

另见:

于 2013-08-31T09:53:30.000 回答