Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save maricris-sn/641980 to your computer and use it in GitHub Desktop.
Save maricris-sn/641980 to your computer and use it in GitHub Desktop.
def reorder(things, ids)
ordered_things = Array.new(things.size)
unless things.size == ids.size
(ids - (things.collect{|x| x.id})).collect{|missing| ids[ids.index(missing)] = nil}
ids = ids.compact
end
raise "Out of sync! Found #{ids.size} items in index, but only #{things.size} were found in database! Remove #{(ids - (things.collect{|x| x.id})).to_sentence}." unless things.size == ids.size
things.each do |thing|
position = ids.index(thing.id)
ordered_things[position] = thing
end
ordered_things
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment