如何在rails中执行任意参数化SQL

2024-04-21

出于性能原因,我需要在 Rails 模型中编写一个新方法来执行一些任意 SQL:

UPDATE table
   SET col1 = ? AND col2 = ?
   WHERE id = ?

我明白我可以使用ActiveRecord::Base.connection.execute or ActiveRecord::Base.connection.update用一串 SQL 来获取我需要的结果,但是替换参数占位符的正确过程是什么(?)与实际参数值? Rails 是否有将参数插入 SQL 语句的方法,还是应该通过手动插入来完成?后者似乎不安全......


你也可以这样做:

updates = ActiveRecord::Base.send(:sanitize_sql_array, ["name = ? and category = ?", name, category])
ActiveRecord::Base.connection.execute("update table set #{updates} where id = #{id.to_s.to_i}")

to_s正在被召唤id before to_i万一它为零。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在rails中执行任意参数化SQL 的相关文章

随机推荐

  • Hello world WebGL 并行性示例

    围绕 WebGL 似乎有许多用于运行并行处理的抽象 例如 https github com MaiaVictor WebMonkeys https github com MaiaVictor WebMonkeys https github
  • 魔法记录添加对象,不同上下文错误

    我在我的应用程序中使用 Magical Record 并希望为用户添加添加 注释 的功能 注释 是 条目 的子项 我添加了这段代码 MagicalRecord saveWithBlock NSManagedObjectContext loc
  • 如何将 HashMap 作为 JSON 类型插入到 PostgreSQL 中?

    contacts数据结构为HashMap 我在用着PostgreSQL客户 Rust Postgres https github com sfackler rust postgres插入contact的键和值放入一个表中 然后我想从表中进行
  • 在 R 中上传超过 2.15 GB 的文件

    我有一个手动流程 通过curl 将 5 6 GB 文件上传到网络服务器 curl X POST data binary myfile csv http myserver port path to api 这个过程工作正常 但我很想使用 R
  • hg 将补丁应用于工作目录是什么意思?

    我一生中第一次尝试使用补丁 恢复损坏的存储库 所以我对这个概念不是很熟悉 尽管我读过一点 我正在使用 TortoiseHg 我已经创建了一个补丁 作为文件 切换到另一个存储库 并尝试导入它 我已要求 THg 将其导入存储库 其他选项是货架和
  • 我应该牺牲 innodb_buffer_pool_size/RAM 来为 query_cache_size 腾出空间吗?

    我有一个 16GB 的专用 Mysql 服务器数据库 我的 innodb buffer pool size 设置为 11GB 左右 我正在系统中实现查询缓存 其大小为 80mb 我应该从哪里创建这个空间 innodb buffer pool
  • 保护 .net Web 服务 URL

    我使用 Asp net 3 5 创建了 Web 服务 现在它在实时 Windows 服务器中完美运行 并在使用以下 url 调用它时为我提供完美的 xml http www somedomain com Service asmx op fe
  • iisnode 托管的 Web 应用程序能否计算出其托管的虚拟路径?

    我在用iisnode https github com tjanczuk iisnode在 Windows 上的 IIS 中托管节点 Web 应用程序 当我在 Web 服务器 例如 Express 或 Restify 上设置路由时 我希望以
  • Android 应用程序在调用 System.exit(0) 后不会关闭

    在添加 Admob 活动之前 我有一个运行良好的 Android 应用程序 我正在通过终止进程来关闭我的应用程序 调用 System exit 0 我知道这是完成应用程序的最糟糕的解决方案 我正在使用 OpenGL 状态和 libgdx f
  • 为什么我应该由 setTimeout 调度的函数调用立即执行? [复制]

    这个问题在这里已经有答案了 这是我的问题 我有这个功能来测试代理服务器 function crawl var oldstatus document getElementById status innerHTML document getEl
  • 如何统计字符串中大写字母、小写字母和数字的个数?

    我想用 C 编写一个程序 它从用户那里获取一个字符串 并输出大写字母 小写字母和数字的数量 例如对于输入 aKb12CD34 结果应为 2 个小写字母 3 个大写字母和 4 个数字 Try include
  • PHP Stream_socket_client 的最大套接字数

    我需要检查数百个 URL 并使用stream socket client为每个URL创建套接字 然后使用stream select来检索它们并评估它们的响应时间等 但是 在创建 237 个套接字之后 我无法再创建套接字 没有错误代码或消息表
  • ASP.NET MVC3 Razor 视图 - VS2010 中编辑速度极慢

    我有一个用 ASP NET MVC3 编写的相对较小的项目 工作一段时间后 Visual Studio 2010 在 Razor 视图中变得非常慢 其他文件类型工作正常 我所说的 慢 是指 每次击键大约需要 1 秒才能注册 击键是什么并不重
  • 远程服务器返回错误:(407) 需要代理身份验证

    当我调用网络服务时出现此错误 远程服务器返回错误 407 需要代理身份验证 我了解了总体思路 并且可以通过添加来使代码正常工作 myProxy Credentials NetworkCredential user password doma
  • Java中的paint()和repaint()

    我可能花了两个小时浏览和阅读这些方法和 Graphics 类 也许我很愚蠢 哈哈 但我只是不理解它们 它们是做什么用的 我知道他们应该重绘或更新屏幕上的组件 但我从来不明白为什么需要这样做 我对此很陌生 例如 如果我在屏幕上移动 JLabe
  • 锁定 HttpRuntime.Cache 以进行延迟加载

    我们有一个运行 NET 2 0 的网站 并开始使用 ASP Net HttpRuntime Cache 来存储频繁数据查找的结果 以减少数据库访问 Snippet lock locker if HttpRuntime Cache cache
  • 网站不会在移动设备上滚动[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个网站 http www skeletoncru com 不会在移动设备上滚动 我以前见过这个问题 但这似乎不是通常的嫌疑人 我没主意了
  • Sql语法:select without from子句作为select中的子查询(subselect)

    在编辑一些查询以添加没有值的列的替代项时 我不小心写了这样的内容 这是简单的版本 SELECT id SELECT name FROM t 令我惊讶的是 MySQL 没有抛出任何错误 而是完成了查询 给出了我预期的结果 name列值 我试图
  • 在 Odoo 10 的表单视图中向 One2Many 树添加多条记录

    我目前正在 Odoo 10 中创建一个小部件 它有一个按钮 用户可以单击此按钮 然后会出现一个对话框 允许用户选择多个记录并将它们添加到相应的 One2Many 字段 例如 我可以选择多个产品并将它们添加到新的销售订单中 相应的订单行将添加
  • 如何在rails中执行任意参数化SQL

    出于性能原因 我需要在 Rails 模型中编写一个新方法来执行一些任意 SQL UPDATE table SET col1 AND col2 WHERE id 我明白我可以使用ActiveRecord Base connection exe