Sha256: cae6a70b39f6fc2d48b5f824655603fd84a5c6d01eb6019c259f5dbbde295ac3
Contents?: true
Size: 1.67 KB
Versions: 2
Compression:
Stored size: 1.67 KB
Contents
require 'databound/extensions' require 'databound/version' require 'databound/data' require 'databound/manager' require 'databound/config' require 'databound/controller' require 'databound/rails/routes' module Databound def self.included(base) base.send(:before_action, :init_crud, only: %i(where create update destroy)) end def where records = @crud.find_scoped_records render json: serialize_array(records) end def create record = @crud.create_from_data render json: { success: true, id: serialize(record, :id), scoped_records: serialize_array(scoped_records), } end def update record = @crud.update_from_data render json: { success: true, id: serialize(record, :id), scoped_records: serialize_array(scoped_records), } end def destroy @crud.destroy_from_data render json: { success: true, scoped_records: serialize_array(scoped_records), } end private def serialize_array(records) return records.to_json unless defined?(ActiveModel::Serializer) serializer = ActiveModel::Serializer.serializer_for(records.first) return records unless serializer ActiveModel::ArraySerializer.new(records).to_json end def serialize(record, attribute) unserialized = record.send(attribute) return unserialized.to_json unless defined?(ActiveModel::Serializer) serializer = ActiveModel::Serializer.serializer_for(record) return unserialized unless serializer serializer.new(record).attributes[:id] end def init_crud @crud = Databound::Manager.new(self) end def scoped_records @crud.find_scoped_records(only_extra_scopes: true) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
databound-3.0.1 | lib/databound.rb |
databound-3.0.0 | lib/databound.rb |