在Rails 3中,我可以使用
我想澄清一下,我说的是完整的原始SQL查询,而不是使用Rail模型。我知道这不是最佳实践,但这是我必须针对此特定查询执行的操作,因为它不能通过Rails的良好ActiveRecord界面表示(相信我,我已经尝试过)。
以下是一个示例调用,这显然比我的实际查询简单:
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)
'#{user_name}'
容易受到SQL注入攻击。 - Hardik# UNSAFE - susceptible to SQL-injection attacks
,也许你没有注意到 :) - NickGnd