0

我正在写一个带有选择的插入:

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 中解决这个问题?

4

2 回答 2

2

这是对@SergioTulentsev 答案的一些解释:

你应该把of的第一个字母改成TEST_TEMPLATE小写,因为以大写字母开头的变量实际上并不是变量,它们是常量,所以你不应该改变它们。

正如@SergioTulentsev 在他的代码中显示的那样,您应该将每个字母更改为小写以匹配 Ruby 中使用的样式约定。

于 2013-07-23T14:41:24.337 回答
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)
于 2013-07-23T14:35:35.463 回答