Sha256: 5ae4b64a405365fdfb5390ecfe3a5638066183ab4318109b2f16739d7f86b179

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

module Trestle
  module Adapters
    module ActiveRecordAdapter
      def collection(params={})
        admin.model.all
      end

      def find_instance(params)
        admin.model.find(params[:id])
      end

      def build_instance(params={})
        admin.model.new(params)
      end

      def update_instance(instance, params)
        instance.assign_attributes(params)
      end

      def save_instance(instance)
        instance.save
      end

      def delete_instance(instance)
        instance.destroy
      end

      def to_param(instance)
        instance
      end

      def unscope(scope)
        scope.unscoped
      end

      def merge_scopes(scope, other)
        scope.merge(other)
      end

      def sort(collection, params)
        if params[:sort]
          collection.reorder(params[:sort] => params[:order] || "asc")
        else
          collection
        end
      end

      def paginate(collection, params)
        collection = Kaminari.paginate_array(collection) unless collection.respond_to?(:page)
        collection.page(params[:page])
      end

      def count(collection)
        collection.count
      end

      def default_attributes
        admin.model.columns.map do |column|
          if column.name.end_with?("_id") && (reflection = admin.model.reflections[column.name.sub(/_id$/, '')])
            Attribute::Association.new(admin, column.name, reflection.klass)
          else
            Attribute.new(admin, column.name, column.type)
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
trestle-0.8.2 lib/trestle/adapters/active_record_adapter.rb
trestle-0.8.0 lib/trestle/adapters/active_record_adapter.rb