module CompositePrimaryKeys ID_SEP = ',' ID_SET_SEP = ';' module ArrayExtension def to_composite_keys CompositeKeys.new(self) end def to_composite_ids CompositeIds.new(self) end end class CompositeArray < Array def to_s join(ID_SEP) end end class CompositeKeys < CompositeArray end class CompositeIds < CompositeArray end end Array.send(:include, CompositePrimaryKeys::ArrayExtension)