我正在使用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(...)
这样的东西)?
答案 0 :(得分:0)
您可以为此使用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中的prepare查询的约定。
对于MySql和其他数据库,可能有所不同。对于Mysql,我认为应该是?
而不是$ 1,$ 2等,这取决于数据库如何提供绑定
另外,您可能需要为某些设置prepare_query: true
。请参阅-http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#exec_query
答案 1 :(得分:-1)
exec_insert
是一种内部方法,可能不是你想要的。你有什么应该没事。
如果您真的开始使用它,并且需要示例,那么测试套件可能是找到它们的最佳位置。一个例子是here。