如何动态更改常量赋值?

时间:2013-07-23 14:32:27

标签: ruby

我正在使用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中解决这个问题?

2 个答案:

答案 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)