我正在写一个插入一个选择:如何动态更改常量赋值?
my_object_id = 7
id_list = [1,2,4,5]
TEST_TEMPLATE = %Q{
INSERT INTO tests
(test_id, data_id, text, created_at, updated_at)
select #{my_object_id}, data_id, text, created_at, updated_at
from tests where id in (#{id_list})
}
ActiveRecord::Base.connection.execute(TEST_TEMPLATE);
我得到的错误,我不能改变常数。如何将值注入到字符串中,以便在插入/选择语句中使用它?
这怎么能在Ruby中解决?
哪行代码会产生错误?我没有看到你上面写的东西有什么问题。 – lurker
也许这是遗留代码,你无法提供帮助,但不应该从模板生成原始SQL并使用ActiveRecord执行它。 ActiveRecord的要点是抽象SQL,提供像自动转义一样的好处来防止SQL注入。 –