class Swagger::Api::ComponentSchema

Attributes

controller[RW]

Public Instance Methods

create() click to toggle source
# File lib/swagger/api/component_schema.rb, line 8
def create
  {
    required: required,
    properties: properties,
    type: 'object'
  }
end

Private Instance Methods

clean_required_attributes() click to toggle source
# File lib/swagger/api/component_schema.rb, line 23
def clean_required_attributes
  required_attributes.map do |attribute|
    if model.reflect_on_all_associations(:belongs_to).map(&:name).map(&:to_s).include?(attribute)
      "#{attribute}_id"
    else
      attribute
    end
  end.compact.uniq.map(&:to_s)
end
model() click to toggle source
# File lib/swagger/api/component_schema.rb, line 47
def model
  controller.model.constantize
end
properties() click to toggle source
# File lib/swagger/api/component_schema.rb, line 39
def properties
  properties = {}
  columns.each do |column|
    properties[column.name] = ColumnSchema.new(column: column).create
  end
  properties
end
required() click to toggle source
# File lib/swagger/api/component_schema.rb, line 18
def required
  controller.try(:columns).try(:required) ||
  columns.map(&:name) & clean_required_attributes
end
required_attributes() click to toggle source
# File lib/swagger/api/component_schema.rb, line 33
def required_attributes
  model.validators.map do |validator|
    validator.attributes if validator.is_a?(ActiveRecord::Validations::PresenceValidator)
  end.compact.flatten.uniq.map(&:to_s)
end