0

私は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);

定数を変更できないというエラーが表示されます。文字列に値を挿入して、挿入/選択ステートメントで使用できるようにするにはどうすればよいですか?

これを Ruby で解決するにはどうすればよいでしょうか。

4

2 に答える 2

2

@SergioTulentsevの回答に対する少しの説明は次のとおりです。

の最初の文字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 に答える