The problem is that is far too simplistic.
To be clear, no one at all likes it when benefits are spent on unnecessary luxuries but there isn't an easy way to mitigate that which doesn't have many negative effects.
Simple - stop giving dole scroungers cash. Give them vouchers or a debit card type of thing that have certain product categories (booze, gambling, etc) blacklisted. Additionally, do not give the recipients the ability to take cash out using this card. Job Done. We love a large civil service in this country, so it would create more government jobs.
Do keep in mind, I'm not talking about the elderly / infirm.
To give you an idea, I went out to dinner last night with a friend (weatherspoons because I'm poor). He's not worked in 8 years due to "depression" and "If I don't have a job I love then I ain't working". He's somehow managed to save up £9k in the bank. Not paying child support for either of his kids. Not paying Lloyds Bank back the £10k loan he took out ages ago (to be fair, he pays £1 / week). This guy was just offered a warehouse job yesterday, not far from his house, and turned it down because "I'd kill someone if I worked in a warehouse." Is that the world we've created? Where we let the moochers and leeches hold us to ransom with threats?
He also works cash in hand - even though he claims he's unable to work. It's frustrating. I don't know what the answer is, but I do know what it ISN'T, which is to continue to give cash out to people who don't have the common decency to thank us workers for providing for them due to their own laziness.