使ActiveRecord清理方法在课堂上可用

时间:2016-07-19 14:29:35

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我正在构建一个构造特殊sql查询的过滤器类。它是一个服务类,而不是模型,没有底层表。

我希望在将其嵌入到sql中时对输入进行清理,以防止注入。
这些方法完全符合我的要求:http://api.rubyonrails.org/classes/ActiveRecord/Sanitization/ClassMethods.html

但是,使用include ActiveRecord::Sanitization不起作用。当我致电sanitize_sql_array时,它会抱怨:

Undefined local variable or method `connection` Applications::ApplicationFilter:Class

这似乎是某种依赖性问题。当我从AR继承我的过滤器类时,使用Applications::ApplicationFilter < ActiveRecord::Base,那么它可以工作。但是我不想这样做...请...请拜托

有没有人知道如何使这个sanitize_sql_array方法无需继承整个大块的活跃记录rhinoserous?

1 个答案:

答案 0 :(得分:2)

running sanitize_sql_array outside of a model

ActiveRecord::Base.send(:sanitize_sql_array, ['test < ?', 123])