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+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
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.

Reply via email to