4

我正在使用 Ruby on Rails 3.2.2 并且正在运行以下原始 SQL:

sql = "INSERT INTO articles (`title`, `user_id`) VALUES #{inserts.join(", ")}"
ActiveRecord::Base.connection.execute(sql)

但是,我想使用 Ruby on Railsexec_insert方法,但没有很好的文档。那么,我怎样才能使用该exec_insert方法来制作我上面所说的相同的东西(也许使用类似的东西Article.connection.exec_insert(...))?

4

2 回答 2

3

你可以用exec_query这个

ActiveRecord::Base.connection().exec_query('INSERT INTO articles(title, user_id) VALUES($1, $2)', 'someQueryName', [[nil, title], [nil, user_id]])

请注意,我已经为 Postgres使用并测试了 $1, $2,因为 $1,$2 是用于在 postgres 中绑定准备查询的约定。

MySql 和其他数据库可能会有所不同。对于 Mysql,我认为它应该?代替 $1、$2 等,这取决于数据库如何提供绑定

此外,您可能需要设置prepare_query: true一些。参考 - http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#exec_query

于 2018-07-05T18:24:52.617 回答
-2

exec_insert是一种内部方法,可能不是您想要的。你所拥有的应该没问题。

如果您真的打算使用它,并且需要示例,那么测试套件可能是找到它们的最佳位置。一个例子是here

于 2012-05-16T06:05:29.283 回答