Use paranoia gem for soft deletes
Use paper_trail for ActiveRecord versioning/auditing
Use state_machine gem for state machines
Use meta-tags gem