Module: ApiMe

Extended by:
ActiveSupport::Concern
Includes:
Pundit
Defined in:
lib/api_me.rb,
lib/api_me/version.rb,
lib/api_me/base_filter.rb,
lib/generators/api_me/install_generator.rb,
lib/generators/api_me/filter/filter_generator.rb,
lib/generators/api_me/policy/policy_generator.rb,
lib/generators/api_me/resource/resource_generator.rb,
lib/generators/api_me/controller/controller_generator.rb

Defined Under Namespace

Modules: ClassMethods, Generators Classes: BaseFilter

Constant Summary collapse

VERSION =
'0.3.3'

Instance Method Summary collapse

Instance Method Details

#createObject



82
83
84
85
86
87
88
89
90
# File 'lib/api_me.rb', line 82

def create
  @object = model_klass.new(object_params)
  authorize @object
  @object.save!(object_params)

  render status: 201, json: @object, serializer: serializer_klass
rescue ActiveRecord::RecordInvalid => e
  handle_errors(e)
end

#destroyObject



102
103
104
105
106
107
108
# File 'lib/api_me.rb', line 102

def destroy
  @object = model_klass.find(params[:id])
  authorize @object
  @object.destroy

  render status: 204, nothing: true
end

#indexObject

Currently merge params in filters hash to support common use case of filtering ids using the top level ids array param. Would eventually like to move to support the jsonapi.org standard closer.



64
65
66
67
68
69
70
71
72
73
# File 'lib/api_me.rb', line 64

def index
  ids_filter_hash = params[:ids] ? { ids: params[:ids] } : {}
  @scoped_objects = policy_scope(model_klass.all)
  @filter_objects = filter_klass.new(
      scope: @scoped_objects,
      filters: (filter_params || {}).merge(ids_filter_hash)
  )

  render json: @filter_objects.results, each_serializer: serializer_klass
end

#showObject



75
76
77
78
79
80
# File 'lib/api_me.rb', line 75

def show
  @object = model_klass.find(params[:id])
  authorize @object

  render json: @object, serializer: serializer_klass
end

#updateObject



92
93
94
95
96
97
98
99
100
# File 'lib/api_me.rb', line 92

def update
  @object = model_klass.find(params[:id])
  authorize @object
  @object.update!(object_params)

  render status: 204, nothing: true
rescue ActiveRecord::RecordInvalid => e
  handle_errors(e)
end