NoSQL, Pagination and Search with Mongoid, Kaminari and Tire

This example uses Mongoid, Kaminari and Tire (ElasticSearch): ```ruby require 'kaminari/models/mongoid_extension' class Product include Mongoid::Document include Mongoid::Paranoia include Mongoid::Timestamps index :application_id, :unique => true # NOTE Best to include after Mongoid include Tire::Model::Search include Tire::Model::Callbacks include Kaminari::MongoidExtension::Criteria include Kaminari::MongoidExtension::Document end ``` Now you can paginate and search all you want: ```ruby # Search and paginate Product.tire.search :page => 1, :per_page => 100, :load => true do query { string "Ho ho" } #sort { by :rating, 'desc' } end # Paginate Product.page(1).per(100) ``` Gotchas ------- \* Use Model.tire.search/index, instead of Model.search which conflicts with Mongoid's index/search methods. \* Use :load => true to return an array containing the model you're searching for instead of Tire::Result::Items. \* Use :per\_page and :page with Model.tire.search, not the page/per methods. \* Mongoid queries are not the same as ActiveRecord queries, see \* MongoDB URL \* ElasticSearch URL \* Boolean queries are difficult