My only hesitation with methods like this is it ends up splitting the business rules into two places, where one is sort of obscured.<p>It's obvious to look at `add_new_payment` for the code that runs when adding a new payment, but then the code isn't there, so you have to know/ask or search in either migrations, a fresh structure dump or poke at the actual db (!).<p>I think they're great for other, well, effects when needed. PostgreSQL is a real powerhouse.