diff --git a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb index 6aa7f9f08..71b7d8669 100644 --- a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb +++ b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb @@ -66,10 +66,11 @@ def offset_value # Set the "limit" (`size`) value # def limit(value) + return self if value.to_i <= 0 @results = nil @records = nil @response = nil - @per_page = value + @per_page = value.to_i search.definition.update :size => @per_page search.definition.update :from => @per_page * (@page - 1) if @page @@ -79,11 +80,12 @@ def limit(value) # Set the "offset" (`from`) value # def offset(value) + return self if value.to_i < 0 @results = nil @records = nil @response = nil @page = nil - search.definition.update :from => value + search.definition.update :from => value.to_i self end diff --git a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb index 1efdb38c2..ae9509fb5 100644 --- a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb +++ b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb @@ -104,6 +104,17 @@ def self.document_type; 'bar'; end assert_nil @response.instance_variable_get(:@records) assert_nil @response.instance_variable_get(:@results) end + + should 'coerce string parameters' do + @response.limit("35") + assert_equal 35, @response.search.definition[:size] + end + + should 'ignore invalid string parameters' do + @response.limit(35) + @response.limit("asdf") + assert_equal 35, @response.search.definition[:size] + end end context "with the page() and limit() methods" do @@ -151,6 +162,17 @@ def self.document_type; 'bar'; end assert_nil @response.instance_variable_get(:@records) assert_nil @response.instance_variable_get(:@results) end + + should 'coerce string parameters' do + @response.offset("35") + assert_equal 35, @response.search.definition[:from] + end + + should 'coerce invalid string parameters' do + @response.offset(35) + @response.offset("asdf") + assert_equal 0, @response.search.definition[:from] + end end context "total" do

AltStyle によって変換されたページ (->オリジナル) /