【发布时间】:2016-03-27 22:47:46
【问题描述】:
在 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)
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 postgresql ruby-on-rails-4