Я пишу вставку с отборным:Как динамически изменять постоянное назначение?
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?
Какая строка кода генерирует ошибку? Я не вижу ничего плохого в том, что вы написали выше. – lurker
Возможно, это устаревший код, и вы не можете ему помочь, но вы не должны генерировать необработанный SQL-код из шаблона и выполнять его с помощью ActiveRecord. Основной темой ActiveRecord является абстракция SQL, предоставляющая такие преимущества, как автоматическое экранирование для предотвращения внедрения SQL. –