我正在使用select:
编写插入内容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);
我收到错误,我无法更改常量。如何将值注入字符串中,以便在insert / select语句中使用它?
如何在Ruby中解决这个问题?
答案 0 :(得分:2)
以下是@SergioTulentsev答案的一些解释:
您应该将TEST_TEMPLATE
的第一个字母更改为小写,因为以大写字母开头的变量实际上不是变量,它们是常量,所以您不应该更改它们。
正如@SergioTulentsev在他的代码中所示,你应该将每个字母改为小写,以匹配Ruby中使用的样式约定。
答案 1 :(得分:1)
没有理由让它成为常数。
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)