Sha256: 2aa38d0c7e431db6caa0fcee2e46228808486c9b3155e9e7ba1bb8b72629858a
Contents?: true
Size: 1.17 KB
Versions: 2
Compression:
Stored size: 1.17 KB
Contents
require 'ransack/context' require 'ransack/adapters/active_record/3.2/context' require 'ransack/adapters/active_record/compat' require 'polyamorous' module Ransack module Adapters module ActiveRecord class Context < ::Ransack::Context def initialize(object, options = {}) super @arel_visitor = @engine.connection.visitor end def relation_for(object) object.all end def type_for(attr) return nil unless attr && attr.valid? name = attr.arel_attribute.name.to_s table = attr.arel_attribute.relation.table_name schema_cache = @engine.connection.schema_cache raise "No table named #{table} exists" unless schema_cache.table_exists?(table) schema_cache.columns_hash(table)[name].type end def evaluate(search, opts = {}) viz = Visitor.new relation = @object.where(viz.accept(search.base)) if search.sorts.any? relation = relation.except(:order).reorder(viz.accept(search.sorts)) end opts[:distinct] ? relation.distinct : relation end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ransack-1.1.0 | lib/ransack/adapters/active_record/context.rb |
ransack-1.0.0 | lib/ransack/adapters/active_record/context.rb |