Consider this schenario where I'm having pagination on a page @recordings = Recording.order(:title).page(params[:page]).per(4) puts params[:page]@recordings.each do |recording| puts recording.id end page ----------------3------------------------ Recording Load (4.0ms) SELECT "recordings".* FROM "recordings" ORDER BY "recordings"."title" ASC LIMIT 4 OFFSET 8 1032 952 1063 1166 <<<<<<<<<<<<<<<<<<<<<<<<<< notice page ----------------4------------------------ Recording Load (4.3ms) SELECT "recordings".* FROM "recordings" ORDER BY "recordings"."title" ASC LIMIT 4 OFFSET 12 1166 <<<<<<<<<<<<<<<<<<<<<<<<<< notice 1168 657 756 So record 1166 is on both pages -------------------- how I solved it class Uniqifyer def self.uniqify not_uniq_field uniq_string = not_uniq_field.to_s # secure ordering e.g [13 , 120, 140 ] not [120, 13, 140] prepend_str = '00000000000000'.byteslice(0...-uniq_string.length) prepend_str + uniq_string + '_uuid_' + UUIDTools::UUID.timestamp_create().to_s endend #in model:before_commit :uniqifydef uniqify self.MY_UNIQ_STRING = Uniqifyer.unigify self.MY_NOT_UNIQ_FIELDend # in controllerdef index @ordered_records = MY_MODEL.order(MY_UNIQ_STRING).page(params[:page]).per(24)end # Notice! Rube is so cool you can directly convert a uniqifyed number like thisnumber = MY_UNIQ_STRING.to_i not so elegant any suggestions are welcome -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/f9eadd8e-f05c-4afe-a5c6-d821799d9934%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.