storing the order of items in a joined table

How about adding a :next_polygon_point_id to your Points_Polygons table and treating it exactly like your linked-list implementation by joining the table to itself? See section 2.10 in the associations guide: Active Record Associations — Ruby on Rails Guides