我正在使用 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