On Tuesday, 28 October 2014 09:14:56 UTC-4, Max Grønlund wrote: > > 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 > > Are you on Postgresql? It takes a very literal interpretation of the SQL standard when row order isn't uniquely specified:
http://dba.stackexchange.com/questions/48989/postgresql-indeterminate-ordering-of-results Sorting on something that's reliably unique (even just `id` along with `title`) should sort this out. --Matt Jones -- 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 [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/59e2a6bd-be59-4ad0-91cd-32e005b7ca5c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

