Use AR 3.2's uniq for distinct don't strip order without sorts

This commit is contained in:
Ernie Miller 2012-02-15 11:48:49 -05:00
parent 6215d3b62d
commit 8629343a64
4 changed files with 18 additions and 3 deletions

View File

@ -18,7 +18,10 @@ module Ransack
def evaluate(search, opts = {})
viz = Visitor.new
relation = @object.except(:order).where(viz.accept(search.base)).order(viz.accept(search.sorts))
relation = @object.where(viz.accept(search.base))
if search.sorts.any?
relation = relation.except(:order).order(viz.accept(search.sorts))
end
opts[:distinct] ? relation.select("DISTINCT #{@klass.quoted_table_name}.*") : relation
end

View File

@ -16,7 +16,10 @@ module Ransack
def evaluate(search, opts = {})
viz = Visitor.new
relation = @object.except(:order).where(viz.accept(search.base)).order(viz.accept(search.sorts))
relation = @object.where(viz.accept(search.base))
if search.sorts.any?
relation = relation.except(:order).order(viz.accept(search.sorts))
end
opts[:distinct] ? relation.select("DISTINCT #{@klass.quoted_table_name}.*") : relation
end

View File

@ -26,6 +26,15 @@ module Ransack
@engine.connection.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).order(viz.accept(search.sorts))
end
opts[:distinct] ? relation.uniq : relation
end
end
end
end

View File

@ -17,7 +17,7 @@ Gem::Specification.new do |s|
s.add_dependency 'activerecord', '~> 3.0'
s.add_dependency 'actionpack', '~> 3.0'
s.add_dependency 'polyamorous', '~> 0.5.0'
s.add_development_dependency 'rspec', '~> 2.6.0'
s.add_development_dependency 'rspec', '~> 2.8.0'
s.add_development_dependency 'machinist', '~> 1.0.6'
s.add_development_dependency 'faker', '~> 0.9.5'
s.add_development_dependency 'sqlite3', '~> 1.3.3'