How to effectively set approved, non approved and drafts for a Rails model?

I think you may need some kind of state machine. There is an enum-like field in Rails that might hold your state http://api.rubyonrails.org/classes/ActiveRecord/Enum.html. You can build your own setters and transitions in a model concern, or you can find a gem for that, there’s a bunch of those https://www.ruby-toolbox.com/categories/state_machines.html.