Use AR 3.2's uniq for distinct don't strip order without sorts
This commit is contained in:
parent
6215d3b62d
commit
8629343a64
|
@ -18,7 +18,10 @@ module Ransack
|
||||||
|
|
||||||
def evaluate(search, opts = {})
|
def evaluate(search, opts = {})
|
||||||
viz = Visitor.new
|
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
|
opts[:distinct] ? relation.select("DISTINCT #{@klass.quoted_table_name}.*") : relation
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,10 @@ module Ransack
|
||||||
|
|
||||||
def evaluate(search, opts = {})
|
def evaluate(search, opts = {})
|
||||||
viz = Visitor.new
|
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
|
opts[:distinct] ? relation.select("DISTINCT #{@klass.quoted_table_name}.*") : relation
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,15 @@ module Ransack
|
||||||
@engine.connection.schema_cache.columns_hash[table][name].type
|
@engine.connection.schema_cache.columns_hash[table][name].type
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
||||||
s.add_dependency 'activerecord', '~> 3.0'
|
s.add_dependency 'activerecord', '~> 3.0'
|
||||||
s.add_dependency 'actionpack', '~> 3.0'
|
s.add_dependency 'actionpack', '~> 3.0'
|
||||||
s.add_dependency 'polyamorous', '~> 0.5.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 'machinist', '~> 1.0.6'
|
||||||
s.add_development_dependency 'faker', '~> 0.9.5'
|
s.add_development_dependency 'faker', '~> 0.9.5'
|
||||||
s.add_development_dependency 'sqlite3', '~> 1.3.3'
|
s.add_development_dependency 'sqlite3', '~> 1.3.3'
|
||||||
|
|
Loading…
Reference in New Issue