在 Rails 4.1.1 中,使用 mysql2 适配器:
我正在使用 ActiveRecordconnection http://apidock.com/rails/ActiveRecord/Base/connection在 MySQL 表中执行多次插入:
ActiveRecord::Base.connection.execute %Q{
INSERT INTO table (`user_id`, `item_id`)
SELECT 1, id FROM items WHERE items.condition IS NOT NULL
}
这工作正常,完成工作并返回nil
.
有没有办法获得数量受影响的行?
(避免需要执行另一个查询)
我找到了的文档execute http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-execute方法有点稀疏。
您可以使用connection.update
执行表达式并返回受影响的行数的方法。
ActiveRecord::Base.connection
.update("INSERT INTO accounts (`name`) VALUES ('first'), ('second')")
=> 2
Rails v4.2.7 文档 -http://api.rubyonrails.org/v4.2.7/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-update http://api.rubyonrails.org/v4.2.7/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-update
Rails 最新文档 -http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-update http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-update
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)