2015-02-06 126 views

回答

7

您可以使用ActiveRecord::Sanitization::ClassMethods中的方法。

您必须小心谨慎,因为它们受到保护,因此仅适用于ActiveRecord::Base子类。

在你可以做类似的模型类:

class MyModel < ActiveRecord::Base 

    def bespoke_query(params) 
    query = sanitize_sql(['select * from somewhere where a = ?', params[:search]]) 
    connection.execute(query) 
    end 

end 

可以send的方法来尝试一下控制台上也:

> MyModel.send(:sanitize_sql, ["Evening Officer ?", "'Dibble'"]) 
=> "Evening Officer '\\'Dibble\\''" 
+2

我想'查询= sanitize_sql('选择* from somewhere where a =?',params [:search])'应该是'query = sanitize_sql(['select * from somewhere where a =?',params [:search]])'编辑 – allthesignals 2015-09-08 01:07:24

+0

。谢谢。 – Shadwell 2015-09-08 07:58:00