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

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

但是,我想使用 Ruby on Rails exec_insert方法,但没有很好的文档说明。那么,我如何使用 exec_insert 方法来实现我上面所说的相同内容(可能使用类似 Article.connection.exec_insert(...) 的方法)?

请您参考如下方法:

你可以为此使用exec_query

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

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

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

您可能还必须为某些设置 prepare_query: true。引用 - http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#exec_query


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!