Den här typen av problem är ett sådant minfält av kantfall att jag alltid skulle delegera logiken till något som IceCube (https://github.com/seejohnrun/ice_cube ). Den är gjord för att hantera den här typen av återkommande scheman, och kommer med enkelt stöd för serialisering etc. Även om det kräver lite omtanke om hur du gör saker, skulle jag starkt rekommendera att du använder det.