我正在寫一個插入一個選擇:如何動態更改常量賦值?
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中解決?
哪行代碼會產生錯誤?我沒有看到你上面寫的東西有什麼問題。 – lurker
也許這是遺留代碼,你無法提供幫助,但不應該從模板生成原始SQL並使用ActiveRecord執行它。 ActiveRecord的要點是抽象SQL,提供像自動轉義一樣的好處來防止SQL注入。 –