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.4.1'

Instance Method Summary collapse

Instance Method Details

#createObject



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

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



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

def destroy
  @object = find_resource
  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.



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

def index
  ids_filter_hash = params[:ids] ? { ids: params[:ids] } : {}
  @scoped_objects = policy_scope(resource_scope)
  @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



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

def show
  @object = find_resource
  authorize @object

  render json: @object, serializer: serializer_klass
end

#updateObject



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

def update
  @object = find_resource
  authorize @object
  @object.update!(object_params)

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