Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
Add Comment
Please, Sign In to add comment