Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用ruby/rails和postgres编写语句_Ruby On Rails_Postgresql_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 用ruby/rails和postgres编写语句

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=

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

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

我到处都找过了——文档都是循环的

我该如何告诉博士后执行

从foo中删除,其中foo.bar=

将“baz”绑定到q标记,然后使用活动记录对象、查找器、beaut子集和所有其他对象执行,而不使用

我只想用一些绑定执行一个准备好的语句。这有多难


(顺便说一句,不是:我不想自己将参数塞进字符串中,并将其作为未经参数化的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开发的“按食谱示例编写代码”方面不符合我的喜好。但是谢谢。我可以继续这个。