It seems to me that you are mostly asking about the soft deletion functionality. When I want this behavior, I usually add an attribute activethat is equal by default true. I also add an area activeto the model, so I can do something like Salon.activeto conveniently get everything that is active.
So, I think my answer is that I would do something like # 1, which I would call soft deletion. Idea # 2 looks pretty crazy to me.