1
0
Fork 0
mirror of https://github.com/kaminari/kaminari.git synced 2022-11-09 13:44:37 -05:00

Merge pull request #449 from bricker/count-arity

Arity on #count with rails 4.1.0
This commit is contained in:
Akira Matsuda 2013-11-09 09:51:30 -08:00
commit ecc443801b
2 changed files with 25 additions and 7 deletions

View file

@ -16,12 +16,16 @@ module Kaminari
# Remove includes only if they are irrelevant # Remove includes only if they are irrelevant
c = c.except(:includes) unless references_eager_loaded_tables? c = c.except(:includes) unless references_eager_loaded_tables?
# Rails 4.1 removes the `options` argument from AR::Relation#count
args = [column_name]
args << options if ActiveRecord::VERSION::STRING < '4.1.0'
# .group returns an OrderdHash that responds to #count # .group returns an OrderdHash that responds to #count
c = c.count(column_name, options) c = c.count(*args)
if c.is_a?(Hash) || c.is_a?(ActiveSupport::OrderedHash) if c.is_a?(Hash) || c.is_a?(ActiveSupport::OrderedHash)
c.count c.count
else else
c.respond_to?(:count) ? c.count(column_name, options) : c c.respond_to?(:count) ? c.count(*args) : c
end end
end end
end end

View file

@ -23,7 +23,11 @@ if defined? ActiveRecord
context "when the scope use conditions on includes" do context "when the scope use conditions on includes" do
it "should keep includes and successfully count the results" do it "should keep includes and successfully count the results" do
# Only @author and @author2 have books titled with the title00x partern # Only @author and @author2 have books titled with the title00x partern
User.includes(:books_authored).where("books.title LIKE 'title00%'").page(1).total_count.should == 2 if ActiveRecord::VERSION::STRING >= "4.1.0"
User.includes(:books_authored).references(:books).where("books.title LIKE 'title00%'").page(1).total_count.should == 2
else
User.includes(:books_authored).where("books.title LIKE 'title00%'").page(1).total_count.should == 2
end
end end
end end
@ -34,14 +38,24 @@ if defined? ActiveRecord
end end
context "when total_count receives options" do context "when total_count receives options" do
it "should return a distinct total count" do it "should return a distinct total count for rails ~> 4.0.0" do
User.page(1).total_count(:name, :distinct => true).should == 4 if ActiveRecord::VERSION::STRING < "4.1.0"
User.page(1).total_count(:name, :distinct => true).should == 4
end
end
it "should ignore the options for rails 4.1+" do
if ActiveRecord::VERSION::STRING >= "4.1.0"
User.page(1).total_count(:name, :distinct => true).should == 7
end
end end
end end
context "when count receives options" do context "when count receives options" do
it "should return a distinct set by column" do it "should return a distinct set by column for rails ~> 4.0.0" do
User.page(1).count(:name, :distinct => true).should == 4 if ActiveRecord::VERSION::STRING < "4.1.0"
User.page(1).count(:name, :distinct => true).should == 4
end
end end
end end