2015-12-04 8 views
2

В модели Rails 3 вы использовали, чтобы быть в состоянии сделать:sanitize_sql_array в Rails 4

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])

Однако это было удалено из рельсов для и, видимо, перешел к «ActiveRecord :: Санитарная :: методы класса» (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

Может кто-то помочь мне с этим? Или предоставить лучший вариант для дезинфекции запроса, как я пытаюсь пройти? Спасибо!

ответ

1

Попробуйте это ..

ActiveRecord::Base.connection.select_all(
    ActiveRecord::Base.send(:sanitize_sql_array, 
          [query = "select created_at as month from orders where date(created_at) >= ?", '2015-12-21'] 
    ) 
) 
Смежные вопросы