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