module CrudConcern

Public Instance Methods

create() { |resource| ... } click to toggle source
# File lib/crud_concern.rb, line 12
def create
  if resource.valid?
    yield(resource) if block_given?
    resource.save!
    render json: resource
  else
    render json: resource,
      status: :unprocessable_entity, serializer: ErrorSerializer
  end
end
destroy() click to toggle source
# File lib/crud_concern.rb, line 32
def destroy
  render json: resource.destroy
end
index() click to toggle source
# File lib/crud_concern.rb, line 4
def index
  render json: resources, include: inclusions, meta: meta
end
show() click to toggle source
# File lib/crud_concern.rb, line 8
def show
  render json: resource, include: inclusions
end
update() click to toggle source
# File lib/crud_concern.rb, line 23
def update
  if resource.update_attributes(attributes)
    render json: resource
  else
    render json: ErrorSerializer.serialize(resource.errors),
      status: :unprocessable_entity
  end
end

Private Instance Methods

attributes() click to toggle source
# File lib/crud_concern.rb, line 58
def attributes
  @attributes ||= deserialize(params)
end
deserialize(hash) click to toggle source
# File lib/crud_concern.rb, line 54
def deserialize(hash)
  ActiveModelSerializers::Deserialization.jsonapi_parse(hash)
end
inclusions() click to toggle source
# File lib/crud_concern.rb, line 66
def inclusions
  params[:include]
end
klass() click to toggle source
# File lib/crud_concern.rb, line 62
def klass
  self.class.name.gsub('Controller','').singularize.constantize
end
limit() click to toggle source
# File lib/crud_concern.rb, line 70
def limit
  params[:limit].to_i || 50
end
meta() click to toggle source
# File lib/crud_concern.rb, line 50
def meta
  { total: scope.count }
end
offset() click to toggle source
# File lib/crud_concern.rb, line 74
def offset
  page = params[:page] ? params[:page].to_i - 1 : 0
  page * limit
end
resource() click to toggle source
# File lib/crud_concern.rb, line 42
def resource
  @resource ||= params[:id] ? klass.find(params[:id]) : klass.new(attributes)
end
resources() click to toggle source
# File lib/crud_concern.rb, line 38
def resources
  scope.order(params[:sort])
end
scope() click to toggle source
# File lib/crud_concern.rb, line 46
def scope
  klass.all
end