【发布时间】:2013-07-23 22:54:26
【问题描述】:
我正在编写一个带有选择的插入:
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 中解决这个问题?
【问题讨论】:
-
哪行代码产生了错误?我看不出你上面写的有什么问题。
-
也许这是遗留代码,您无能为力,但您不应该从模板生成原始 SQL 并使用 ActiveRecord 执行它。 ActiveRecord的主要作用是抽象SQL,提供自动转义等好处,防止SQL注入。
标签: ruby