Class: Api::V1::SimpleAdmin::ResourcesController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/api/v1/simple_admin/resources_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



51
52
53
54
55
56
57
58
59
60
61
62
# File 'app/controllers/api/v1/simple_admin/resources_controller.rb', line 51

def create
  model_klass = params[:model_klass_name].constantize

  resource = model_klass.new(resource_params)
  resource.image = CarrierStringIO.new(Base64.decode64(resource_params[:image]))

  if resource.save
    render json: resource
  else
    render json: resource.errors
  end
end

#destroyObject



75
76
77
78
79
80
# File 'app/controllers/api/v1/simple_admin/resources_controller.rb', line 75

def destroy
  model_klass = params[:model_klass_name].constantize
  resource = model_klass.find(params[:id])

  resource.destroy
end

#indexObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/controllers/api/v1/simple_admin/resources_controller.rb', line 4

def index
  model_klass  = params[:model_klass_name].constantize
  model_fields = params[:model_fields].map { |field_attributes| field_attributes[:field_name] }

  per_page = params[:per_page].to_i
  page     = params[:page].to_i if params[:page].present?
  total    = model_klass.count

  resources = model_klass.limit(per_page)

  if params[:query].present?
    search_result = search(params[:query], model_klass, params[:model_attributes])

    resources = search_result[:resources]
    total     = search_result[:total]
  end

  resources = resources.offset((per_page * page) - per_page) if page.present?
  resources = resources.order(params[:sort][:column_name] => params[:sort][:order]) if params[:sort].present?

  resources = resources.map do |resource|
    _resource = {}

    resource.attributes.each do |attribute_name, attribute_value|
      next unless model_fields.include?(attribute_name)

      _resource[attribute_name] = attribute_value
    end

    _resource
  end

  render json: {
    resources: resources,
    total:     total
  }
end

#showObject



42
43
44
45
46
47
48
49
# File 'app/controllers/api/v1/simple_admin/resources_controller.rb', line 42

def show
  model_klass = params[:model_klass_name].constantize
  model_fields = params[:model_fields]

  resource = model_klass.find(params[:id]).attributes.slice(*model_fields)

  render json: resource
end

#updateObject



64
65
66
67
68
69
70
71
72
73
# File 'app/controllers/api/v1/simple_admin/resources_controller.rb', line 64

def update
  model_klass = params[:model_klass_name].constantize
  resource = model_klass.find(params[:id])

  if resource.update(resource_params)
    render json: resource
  else
    render json: resource.errors
  end
end