2010-07-21 19 views
5
Bu sadece karmaşık SQLs :)

Raylar - kaçan SQL parametreler

Ben bulmak */koşul yöntemleri kullanarak değilim beri içindir kesinliği için benim raylar modelinde bazı düz SQLs (yapıyorum

, yardımcı bir yöntem olduğunu Bunu yapmak için doğrudan kullanabilir miyim?

cevap

6

Bağlantı nesnesindeki quote yönteminin dizeleri kaçmasına neden olur. Sorgular oluştururken, ActiveRecord koşul karmalarını veya dizilerini SQL WHERE yan tümcesine dönüştürmek için sanitize_sql_for_conditions kullanın.

ActiveRecord::ConnectionAdapters::DatabaseStatements'daki yöntemler, özellikle select_ ile başlayanlar için doğrudan sorgular için kullanışlıdır.

+0

evet ben connection.select_all (sql) yapıyorum. Ama rdoc'ta bağlantı nesnesi üzerinde "alıntı" yöntemini, giriş koşullarından kaçtığım için giriş paramlarından kaçamıyorum. – kapso

+0

Tamam, anladım, teşekkürler! – kapso

+7

'sanitize_sql_for_conditions' bir modüle taşınmış ve özel olarak ayarlanmış gibi görünüyor. – lulalala

0

Raylar, yer tutucularla ilgili olarak dahili olarak sanitize_sql_for_conditions'u kullanır. Elbette, bu yöntem korunur, böylece bir ActiveRecord modelinin dışında kullanamazsınız (temiz olarak). Sen send kullanarak protectedness etrafında alabilirsiniz: my modelinde

escaped_string = Model.send(:sanitize_sql_for_conditions, [ 
     'id = ? and name = ?', 
     params[:id], params[:name] 
    ] 
) 
İlgili konular