Виноградная сущность не работает

Я использую grape драгоценный камень для API а также grape-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

Он должен вернуть что-то вроде этого согласно документации:

{
  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 ответ

Проверьте виноград CHANGELOG, и вы узнаете, что функция представления будет работать в следующей версии (0.4.6).

0.4.6 (Далее) #114: Добавлена ​​опция "только", которая выбирает, какие атрибуты должны быть возвращены - @estevaoam.

Так что, если вы хотите использовать эту функцию прямо сейчас, вы можете использовать новейшую версию github.

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

Другие вопросы по тегам