Sha256: e3d9ad77bb97293e675e4bd3127f0786494c2c1e2fa8a392d7f828e7dd3aaf50

Contents?: true

Size: 1.46 KB

Versions: 31

Compression:

Stored size: 1.46 KB

Contents

module Lipsiadmin
  module DataBase
    # This Module provides named scope for:
    # 
    # - Search records in a extjs way (but can reusable)
    # - Paginate records in a extjs way (but can be reusable)
    # - Add association to the model (used for search in dependents tables)
    # 
    #   Examples:
    #   
    #     invoices = current_account.store.invoices.with(:order).search(params)
    #     invoices_count = invoices.size
    #     invoices_paginated = invoices.paginate(params)
    # 
    module UtilityScopes
      def self.included(base)#:nodoc:
        base.class_eval do 
          named_scope :search, lambda { |params|
            order = params[:sort].blank? && params[:dir].blank? ? nil : "#{params[:sort]} #{params[:dir]}"
            conditions = nil

            if !params[:query].blank? && !params[:fields].blank?
              filters = params[:fields].split(",").collect { |f| "#{f} LIKE ?" }.compact
              conditions = [filters.join(" OR ")].concat((1..filters.size).collect { "%#{params[:query]}%" })
            end

            { :conditions => conditions }
          }

          named_scope :paginate, lambda { |params|
            order = params[:sort].blank? && params[:dir].blank? ? nil : "#{params[:sort]} #{params[:dir]}"
            { :order => order, :limit => params[:limit], :offset => params[:start] }
          }

          named_scope :with, lambda { |*associations| { :include => associations } }
        end
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
lipsiadmin-5.0.8 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.7 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.6 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.5 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.4 lib/data_base/utility_scopes.rb
lipsiadmin-4.1.8 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.0 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.1 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.2 lib/data_base/utility_scopes.rb
lipsiadmin-5.0.3 lib/data_base/utility_scopes.rb
lipsiadmin-3.0 lib/data_base/utility_scopes.rb
lipsiadmin-3.1 lib/data_base/utility_scopes.rb
lipsiadmin-3.2 lib/data_base/utility_scopes.rb
lipsiadmin-2.9 lib/data_base/utility_scopes.rb
lipsiadmin-3.3.1 lib/data_base/utility_scopes.rb
lipsiadmin-3.3.3 lib/data_base/utility_scopes.rb
lipsiadmin-3.3.2 lib/data_base/utility_scopes.rb
lipsiadmin-3.4.2 lib/data_base/utility_scopes.rb
lipsiadmin-3.4.0 lib/data_base/utility_scopes.rb
lipsiadmin-3.3.4 lib/data_base/utility_scopes.rb