Sha256: cd1eb2a4986456624d2b3b19344a83534985b4c1a51c95a43c2992e39045ef0c

Contents?: true

Size: 1.38 KB

Versions: 12

Compression:

Stored size: 1.38 KB

Contents

require 'ransack/visitor'

module Ransack
  class Context
    attr_reader :arel_visitor

    class << self

      def for_class(klass, options = {})
        if klass < ActiveRecord::Base
          Adapters::ActiveRecord::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] || Polyamorous::OuterJoin
      @search_key = options[:search_key] || Ransack.options[:search_key]
      @associations_pot = {}
      @tables_pot = {}
      @lock_associations = []

      @base = @join_dependency.instance_variable_get(:@join_root)
    end

    def bind_pair_for(key)
      @bind_pairs ||= {}

      @bind_pairs[key] ||= begin
        parent, attr_name = get_parent_and_attribute_name(key.to_s)
        [parent, attr_name] if parent && attr_name
      end
    end

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

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
ransack-3.2.1 lib/ransack/adapters/active_record/ransack/context.rb
ransack-3.2.0 lib/ransack/adapters/active_record/ransack/context.rb
ransack-3.1.0 lib/ransack/adapters/active_record/ransack/context.rb
ransack-3.0.1 lib/ransack/adapters/active_record/ransack/context.rb
ransack-3.0.0 lib/ransack/adapters/active_record/ransack/context.rb
ransack-2.6.0 lib/ransack/adapters/active_record/ransack/context.rb
ransack-2.5.0 lib/ransack/adapters/active_record/ransack/context.rb
date_n_time_picker_activeadmin-0.1.2 vendor/bundle/ruby/2.6.0/gems/ransack-2.4.2/lib/ransack/adapters/active_record/ransack/context.rb
date_n_time_picker_activeadmin-0.1.1 vendor/bundle/ruby/2.6.0/gems/ransack-2.4.2/lib/ransack/adapters/active_record/ransack/context.rb
ransack-2.4.2 lib/ransack/adapters/active_record/ransack/context.rb
ransack-2.4.1 lib/ransack/adapters/active_record/ransack/context.rb
ransack-2.4.0 lib/ransack/adapters/active_record/ransack/context.rb