葡萄实体代表不起作用

时间:2015-06-02 05:43:30

标签: ruby-on-rails grape grape-api grape-entity

我正在使用grape gem APIgrape-entity来生成回复。

简单show/get请求响应正常,只返回ActiveRecord Object的数据。的

当我尝试包含来自has_many关系的数据时,它会返回与该对象相关的所有数据。的

但是当我represent数据时

post = Post.first
data = V1::Entities::PostEntities.represent(post, only: [:id, { comments: [:id, :body] }])
data.as_json

它应该按照documentation返回类似的内容:

{
  id: 1,
  comments: [{
    id: 1,
    body: 'example'
  }]
}

会返回:

{
  id: 1,
  comments: [{
    id: 1,
    user_id: 1,
    body: 'example',
    created_at: 'some_timestamp',
    updated_at: 'also_some_timestamp',
    is_deleted: 0,
  }]
}

我的PostEntities包含:

module V1
  module Entities
    class PostEntities < Grape::Entity
      expose :id
      expose :comments, with: V1::Entities::CommentEntities
    end
  end
end

我的CommentEntities包含:

module V1
  module Entities
    class CommentEntities < Grape::Entity
      expose :id
      expose :user_id
      expose :body
      expose :created_at
      expose :updated_at
      expose :is_deleted
    end
  end
end

represent方法存在问题。我没有得到问题所在?

1 个答案:

答案 0 :(得分:0)

查看葡萄CHANGELOG,你会发现代表功能在下一个版本(0.4.6)中有效。

0.4.6(下一步)#114:添加'only'选项,选择应返回哪些属性 - @estevaoam。

所以,如果你现在想要使用这个功能,你可以使用最新的github版本。

gem 'grape-entity', github: "intridea/grape-entity", branch: "master"