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: http://guides.rubyonrails.org/association_basics.html