sql - Rails 4 中的 sanitize_sql_array

标签 sql ruby-on-rails ruby-on-rails-4 activerecord sanitization

在 Rails 3 模型中,您曾经能够做到:

query = self.sanitize_sql_array(["SELECT MONTH(created) AS month, YEAR(created) AS year FROM orders WHERE created>=? AND created<=? GROUP BY month ORDER BY month ASC", created1, created2])

然而,这已从 rails for 中删除,显然已移至“ActiveRecord::Sanitization::ClassMethods”(http://api.rubyonrails.org/classes/ActiveRecord/Sanitization/ClassMethods.html#method-i-sanitize_sql_for_assignment)。但我试过调用ActiveRecord::Sanitization.sanitize_sql_array(...)我得到了错误:

undefined method 'sanitize_sql_array' for ActiveRecord::Sanitization:Module

有人可以帮我解决这个问题吗?或者提供一个更好的选项来像我试图传递的那样清理查询?谢谢!

最佳答案

试试这个..

ActiveRecord::Base.connection.select_all(
    ActiveRecord::Base.send(:sanitize_sql_array, 
                            ["select created_at as month from orders where date(created_at) >= ?", '2015-12-21']
    )
)

关于sql - Rails 4 中的 sanitize_sql_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094129/

相关文章:

ruby-on-rails - Rails 4.1 环境变量不重新加载

ASP.NET SQL 提供程序

java - Postgresql:创建一个使用generate_series的查询,其间隔正确考虑DST更改并在真实日历日上展平

ruby-on-rails - #<BottleSpecification :0x00000000e9fdb8> 的未定义方法 `rebuild'

ruby-on-rails - 未捕获的类型错误 : Cannot read property 'apply' of null onReadyStateChangeReplacement

ruby-on-rails - 创建新记录时如何传递current_user?

ruby-on-rails - 来自多态追随者的 Rails 事件提要

java - 如何动态填写报表?

sql - 在 PostgreSQL 中使用 Order By 子句进行分区

ruby-on-rails - Rails 4. 模型中的国家/地区验证