出于性能原因,我需要在 Rails 模型中编写一个新方法来执行一些任意 SQL:
UPDATE table
SET col1 = ? AND col2 = ?
WHERE id = ?
我明白我可以使用ActiveRecord::Base.connection.execute
or ActiveRecord::Base.connection.update
用一串 SQL 来获取我需要的结果,但是替换参数占位符的正确过程是什么(?
)与实际参数值? Rails 是否有将参数插入 SQL 语句的方法,还是应该通过手动插入来完成?后者似乎不安全......
你也可以这样做:
updates = ActiveRecord::Base.send(:sanitize_sql_array, ["name = ? and category = ?", name, category])
ActiveRecord::Base.connection.execute("update table set #{updates} where id = #{id.to_s.to_i}")
to_s
正在被召唤id
before to_i
万一它为零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)