Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何在Rails 4中清理原始SQL大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在Rails 3中,我可以使用sanitize_sql_array来清理那些需要原始SQL查询的偶然时刻的原始SQL.但是这似乎已经在Rails 4中删除了,或者没有那么多删除,而是转移到ActiveRecord :: Sanitization.但是,我现在无法弄清楚如何调用sanitize_sql_array,那么在Rails 4中清理原始SQL的最佳方法是什么?

我想澄清一下,我在这里讨论完整的原始SQL查询,而不是使用Rail的模型.我知道这不是最佳实践,这正是我必须为这个特定查询做的事情,因为它不能用Rails的好的ActiveRecord接口来表示(相信我,我已经尝试过了).

这是一个示例调用,它明显比我的查询实际上看起来更简单:

query = "SELECT * FROM users 
LEFT OUTER JOIN posts ON users.id=posts.user_id
AND posts.topic_id = '#{topic.id}'" 
# ^- Obviously bad and very vulnerable,this is what we're trying to fix
ActiveRecord::Base.connection.select_all(query)

解决方法

如果您真的需要编写原始SQL,可以使用 quote来清理它:
conn = ActiveRecord::Base.connection
name = conn.quote("John O'Neil")
title = conn.quote(nil)
query = "INSERT INTO users (name,title) VALUES (#{name},#{title})"
conn.execute(query)

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何在Rails 4中清理原始SQL全部内容,希望文章能够帮你解决ruby-on-rails – 如何在Rails 4中清理原始SQL所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: