2017-04-13 11 views
0

私はこれらの3つのモデルを持っています。トピックと投稿は多対多の関係にあります。関連モデルをJSON結果に含めるにはどうすればいいですか?

class Topic < ApplicationRecord 
    has_many :post_topic 
    has_many :posts, through: :posts_topics 

    validates :name, presence: true, length: { in: 3..26 }, uniqueness: true 
end 

class Post < ApplicationRecord 
    has_many :post_topic 
    has_many :topics, through: :post_topic 

    validates :title, presence: true, length: { in: 3..255 } 
    validates :body, presence: true, length: { in: 3..1400 } 

    accepts_nested_attributes_for :topics, allow_destroy: true 
end 

class PostTopic < ApplicationRecord 
    self.table_name = "posts_topics" 
    belongs_to :post 
    belongs_to :topic 
end 

私は記事をフェッチするとき、私はJSONオブジェクトはトピックは、同様にこのようなものが含まれているしたい:私は関連を含めるための方法を含むが、ときに私が使用している

{ 
    title: ..., 
    body: ..., 
    topics: [ ... ] 
} 

をhttpieを使用して結果をテストした場合、返された投稿には関連付けられたレコードが含まれていません。

[ 
    { 
     "body": "bar", 
     "created_at": "2017-04-13T00:29:51.506Z", 
     "id": 1, 
     "title": "foo", 
     "updated_at": "2017-04-13T00:29:51.506Z" 
    }, 
    { 
     "body": "bar", 
     "created_at": "2017-04-13T21:20:21.854Z", 
     "id": 2, 
     "title": "foo", 
     "updated_at": "2017-04-13T21:20:21.854Z" 
    }, 
    { 
     "body": "bar", 
     "created_at": "2017-04-13T21:22:02.979Z", 
     "id": 3, 
     "title": "foo", 
     "updated_at": "2017-04-13T21:22:02.979Z" 
    } 
] 

インクルードが戻りオブジェクト内の関連するレコードを置くことになっメソッドが含まれないです??:

def index 
    @posts = Post.includes(:topics).all 

    json_response(@posts) 
end 

ここhttpie結果です

答えて

1

はい、includeは関連レコードを置きますが、あなたは間違った場所でそれを使用している、これを試してみてください。詳細については、

def index 
    @posts = Post.all 
    json_response(@posts.as_json(include: :topics)) 
end 

チェックhereを。

関連する問題