Ruby on rails 用ruby/rails和postgres编写语句
我想在rails中执行一个相当讨厌的递归更新查询。这意味着我想编写一些原始的PostgresSQL,带有参数,并在rails控制器中执行它 我该怎么做?我在activerecord中找不到PreparedStatement类,似乎没有任何名为“native”的方法,我已经尝试了activerecord::Base.connection.exec_delete,我已经查看了源代码-只是无法,无法解决它 我到处都找过了——文档都是循环的 我该如何告诉博士后执行 从foo中删除,其中foo.bar= 将“baz”绑定到q标记,然后使用活动记录对象、查找器、beaut子集和所有其他对象执行,而不使用 我只想用一些绑定执行一个准备好的语句。这有多难Ruby on rails 用ruby/rails和postgres编写语句,ruby-on-rails,postgresql,ruby-on-rails-4,Ruby On Rails,Postgresql,Ruby On Rails 4,我想在rails中执行一个相当讨厌的递归更新查询。这意味着我想编写一些原始的PostgresSQL,带有参数,并在rails控制器中执行它 我该怎么做?我在activerecord中找不到PreparedStatement类,似乎没有任何名为“native”的方法,我已经尝试了activerecord::Base.connection.exec_delete,我已经查看了源代码-只是无法,无法解决它 我到处都找过了——文档都是循环的 我该如何告诉博士后执行 从foo中删除,其中foo.bar=
(顺便说一句,不是:我不想自己将参数塞进字符串中,并将其作为未经参数化的sql执行。这是错误的,这意味着我必须担心数据的清理。)请参阅Rails中PreparedStatements的讨论(“使用Prepared语句”)。显示要调用的方法,以及如何格式化参数 更新: 从文章中转述: 对于delete方法参数,首先使用模板,然后是查询名称(可以是nil),然后是要注入语句的值数组。所以像这样:
row_count = connection.delete("DELETE FROM foo WHERE foo.bar=$1", nil, [[nil, 'baz']])
你在尝试创建某种ETL系统吗?谢谢,这就是我需要知道的。现在唯一的问题是——这在文档中的什么地方?我怎么能自己发现这是怎么做的…好的,我在aciverecord/connectionadapters/databasestatements连接中找到了doco,但它没有太大帮助。我不得不说——我发现Ruby开发的“按食谱示例编写代码”方面不符合我的喜好。但是谢谢。我可以继续这个。