我会更简单地得到我需要的答案而不会让你阅读很多代码。
MySQL存储过程:
CREATE PROCEDURE add_player
(IN name varchar(100),
IN isTrue boolean)
BEGIN
START TRANSACTION;
insert into tags (name,is_player) values (name,isTrue);
COMMIT;
END //
player_controller.rb
ActiveRecord::Base.connection.execute("call add_player('#{name}', #{is_player})")
我看到的两个问题(如果你看到更多 - 比如说):
name
包含'
,则会中断通话?
作为参数。原因是当我尝试使用?
时,它无法正常工作。我还尝试将其更改为Player.where("add_player(?,?)",name,is_player)
答案 0 :(得分:0)
ActiveRecord::Base.connection.execute("call add_player(#{ActiveRecord::Base.sanitize(name)}, #{is_player})")
以下SO链接建议了另一种方法
using sanitize_sql_array to escape strings
唯一的问题是sanitize_sql_array
不是公共方法