Recently I've been having a foul taste in my mouth, or just a
bad feeling, if you will. Whenever I started adding validations
and callbacks to a model in a Rails application. It just felt
wrong. It felt like I'm adding code that shouldn't be there,
that makes everything a lot more complicated, and turns explicit
into implicit code. Code that is only being run depending on the
persistence state of an object. Code that is being hard to test,
because you need to save an object to test parts of your
business logic. Don't get me started on observers, I never was a
fan of them. Putting stuff that should be run when an object was
saved elsewhere is the worst kind of hiding business logic.  The
two are somewhat bound together: Create an object, run a
callback and validations. Update an object, check if an
attribute is set, run a different callback. I started to loathe
the lack of implicitness that callbacks gave my code, and I
started to loathe that libraries everywhere copied that
behaviour from ActiveRecord, and th