在Rails 3中,我可以使用sanitize_sql_array来清理那些需要原始SQL查询的偶然时刻的原始sql.但是这似乎已经在Rails 4中删除了,或者没有那么多删除,而是转移到ActiveRecord :: Sanitization.但是,我现在无法弄清楚如何调用sanitize_sql_array,那么在Rails 4中清理原始sql的最佳方法是什么?
我想澄清一下,我在这里讨论完整的原始SQL查询,而不是使用Rail的模型.我知道这不是最佳实践,这正是我必须为这个特定查询做的事情,因为它不能用Rails的好的ActiveRecord接口来表示(相信我,我已经尝试过了).
query = "SELECT * FROM users LEFT OUTER JOIN posts ON users.id=posts.user_id AND posts.topic_id = '#{topic.id}'" # ^- ObvIoUsly bad and very vulnerable,this is what we're trying to fix ActiveRecord::Base.connection.select_all(query)