Sha256: 813062150fc20329368c615e8c407f12727cfe3d97bbe730a97b9b94eb895c18

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

module Padrino
  module Admin

    ##
    # Extend your orm adding these functions:
    # 
    # * Translatable columns names (if not just support them)
    # * Full text search
    # * Pagination
    # * Extend Account Model with: role, validation, permission, authentication
    # 
    module Orm

      class ExtSearch < Struct.new(:count, :records); end

      ##
      # Method used for register the orm extensions.
      # 
      def self.register!
        ::DataMapper::Model.append_inclusions(Padrino::Admin::Orm::DataMapper::Base)      if defined?(::DataMapper)
        ::ActiveRecord::Base.send(:include, Padrino::Admin::Orm::ActiveRecord::Base)      if defined?(::ActiveRecord)
        ::MongoMapper::Document.append_inclusions(Padrino::Admin::Orm::MongoMapper::Base) if defined?(::MongoMapper)
        # Extend also account model
        self.extend_account!
      end

      ##
      # This method it's used for extend Account Model (if present)
      # 
      def self.extend_account!
        if defined?(Account) && Account.respond_to?(:orm)
          case Account.orm
            when :activerecord then Account.send(:include, Padrino::Admin::Orm::ActiveRecord::Account)
            when :datamapper   then Account.send(:include, Padrino::Admin::Orm::DataMapper::Account)
            when :mongomapper  then Account.send(:include, Padrino::Admin::Orm::MongoMapper::Account)
          end
        end
      end
    end # Orm
  end # Admin
end # Padrino

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
padrino-admin-0.7.9 lib/padrino-admin/orm.rb
padrino-admin-0.7.8 lib/padrino-admin/orm.rb
padrino-admin-0.7.7 lib/padrino-admin/orm.rb
padrino-admin-0.7.6 lib/padrino-admin/orm.rb