Как вернуть полиморфные данные с помощью Grape Enttity и Swagger? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть полиморфный тег, и я хочу искать неоднозначные элементы по этому тегу.
Как я могу вернуть этот объект Grape?

class Tag < ActiveRecord::Base
  belongs_to :taggable, polymorphic: true
end

class Article < ActiveRecord::Base
  has_many :tags, as: :taggable
end

class Post < ActiveRecord::Base
  has_many :tags, as: :taggable
end

module Api
  module Entities
    class Tag < Grape::Entity
      expose :lable
      expose :taggable # HELP: , using Api::Entities::<polymorphic>
    end
end

Мне нужно определить объект taggable, чтобывыставить Swagger aka интерфейс OpenAPI.

1 Ответ

0 голосов
/ 12 февраля 2019

В этом случае мы можем использовать:

module Api
  module Entities
    class Tag < Grape::Entity
      expose :lable
      expose :taggable do |tabgable, options|
        if tabgable.is_a?(Article)
          API::Entities::Article.represent tabgable, options
        elsif tabgable.is_a?(Post)
          API::Entities::Post.represent tabgable, options
        end
      end
    end
  end
end
...