Sha256: 056f3b87651a6cdcca2f96eb07bca64c4bea98b06291eaddc58c1ff4056b5eeb

Contents?: true

Size: 1.58 KB

Versions: 17

Compression:

Stored size: 1.58 KB

Contents

require 'ransack/visitor'

module Ransack
  class Context
    # attr_reader :arel_visitor

    class << self

      def for_class(klass, options = {})
        if klass.ancestors.include?(::Mongoid::Document)
          Adapters::Mongoid::Context.new(klass, options)
        end
      end

      def for_object(object, options = {})
        case object
        when ActiveRecord::Relation
          Adapters::ActiveRecord::Context.new(object.klass, options)
        end
      end

    end # << self

    def initialize(object, options = {})
      @object = relation_for(object)
      @klass = @object.klass
      # @join_dependency = join_dependency(@object)
      # @join_type = options[:join_type] || Arel::OuterJoin
      @search_key = options[:search_key] || Ransack.options[:search_key]

      @base = @object.klass
      # @engine = @base.arel_engine

      # @default_table = Arel::Table.new(
      #   @base.table_name, :as => @base.aliased_table_name, :engine => @engine
      #   )
      @bind_pairs = Hash.new do |hash, key|
        parent, attr_name = get_parent_and_attribute_name(key.to_s)
        if parent && attr_name
          hash[key] = [parent, attr_name]
        end
      end
    end

    def klassify(obj)
      if Class === obj && ::ActiveRecord::Base > obj
        obj
      elsif obj.respond_to? :klass
        obj.klass
      elsif obj.respond_to? :active_record  # Rails 3
        obj.active_record
      elsif obj.respond_to? :base_klass     # Rails 4
        obj.base_klass
      else
        raise ArgumentError, "Don't know how to klassify #{obj.inspect}"
      end
    end

  end
end

Version data entries

17 entries across 17 versions & 3 rubygems

Version Path
ransack-1.8.4 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.8.3 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.8.2 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.8.1 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.8.0 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.7.0 lib/ransack/adapters/mongoid/ransack/context.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/ransack-1.6.6/lib/ransack/adapters/mongoid/ransack/context.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/ransack-1.6.6/lib/ransack/adapters/mongoid/ransack/context.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/ransack-1.6.6/lib/ransack/adapters/mongoid/ransack/context.rb
shoppe-paypal-1.1.0 vendor/bundle/ruby/2.1.0/gems/ransack-1.6.2/lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.6.6 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.6.5 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.6.4 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.6.3 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.6.2 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.6.1 lib/ransack/adapters/mongoid/ransack/context.rb
ransack-1.6.0 lib/ransack/adapters/mongoid/ransack/context.rb