gpt4 book ai didi

ruby-on-rails - 使用 postgres 在 ruby​​/rails 中准备好的语句

转载 作者:行者123 更新时间:2023-11-29 12:13:13 25 4
gpt4 key购买 nike

我想在 Rails 中执行一个相当讨厌的递归更新查询。这意味着我想编写一些带有参数的原始 postgres sql,并在 Rails Controller 中执行它。

我该怎么做?我在 activerecord 中找不到 PreparedStatement 类,似乎没有任何名为“native”的方法,我已经尝试过 ActiveRecord::Base.connection.exec_delete,我查看了源代码 - 只是不能,无法工作出。

我到处都看了 - 文档在圈子里。

我将如何告诉 postgres 执行

从 foo 中删除 foo.bar=?

将“baz”绑定(bind)到 q 标记,并且使用事件记录对象、查找器、您喜欢的子集以及所有其他对象。

我只想执行一个带有一些绑定(bind)的准备好的语句。能有多难?

(PS,不:我不想自己将参数塞入字符串并将其作为未参数化的 sql 执行。这是错误的,这意味着我必须担心清理数据。 )

最佳答案

请参阅此处关于 Rails 中 PreparedStatements 的讨论(“使用准备好的语句”)- http://blog.daniel-azuma.com/archives/216 .向您展示要调用哪些方法,以及如何格式化您的参数。

更新:

转自帖子:

对于 delete 方法参数,首先使用模板,然后是查询名称(可以是 nil),然后是要注入(inject)到语句中的值数组。所以像这样:

row_count = connection.delete("DELETE FROM foo WHERE foo.bar=$1", nil, [[nil, 'baz']])

关于ruby-on-rails - 使用 postgres 在 ruby​​/rails 中准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com