rails 3 activerecord order - qual é a solução adequada para a injeção de sq

digamos que eu tenho uma página de lista de usuários e você pode classificar pelas diferentes colunas; ao clicar em 'email', passará sort_by = email sort_direction = asc ou desc

sort_by = "email" # really params[:sort_by]
sort_direction = "asc" # really params[:sort_direction]
User.order("#{sort_by} #{sort_direction}")
# SELECT "users".* FROM "users" ORDER BY email asc

para que funcione conforme o esperado, no entanto, se alterarmos o sort_by

sort_by = "email; DELETE from users; --"
User.order("#{sort_by} #{sort_direction}")
# SELECT "users".* FROM "users" ORDER BY email; DELETE from users; -- asc

agora não temos mais usuários:

Eu posso criar manualmente uma lista branca de sort_by válida e comparar parâmetros [: sort_by] com isso, mas esperava que houvesse alguma maneira de lidar com esse tipo de coisa

questionAnswers(1)

yourAnswerToTheQuestion