module SwaggerApi::Concerns::StiSchema
Public Instance Methods
schema(model)
click to toggle source
# File lib/swagger_api/concerns/sti_schema.rb, line 16 def schema(model) if sti?(model) { oneOf: model.descendants.map do |klass| { '$ref' => "#/components/schemas/#{klass.name}" } end } else { '$ref' => "#/components/schemas/#{model.try(:name) || model}" } end end
sti?(model)
click to toggle source
# File lib/swagger_api/concerns/sti_schema.rb, line 9 def sti?(model) model_klass = model.try(:safe_constantize) || model return false if model_klass.is_a?(String) || model_klass.nil? Rails.application.eager_load! model_klass.descendants.count != 0 end