如何禁用续集的双下划线行为?
我使用遗留数据库架构,其中我有很多列" __"在名字中。
db[:abc].insert({vector_a__c: "356"})
Sequel::DatabaseError: PG::UndefinedColumn: ERROR: column "vector_a" of relation "abc" does not exist
LINE 1: INSERT INTO "abc" ("vector_a"."c") VALUES ('356') RETURNING ...
答案 0 :(得分:3)
通常,您希望将其包装在标识符中:
db[:abc].insert(Sequel.identifier(:vector_a__c) => "356")
使用字符串作为标识符仅适用于极少数情况下的向后兼容性,其中它是明确的(即SQL字符串无效的地方)。
答案 1 :(得分:1)
当您将列名称作为字符串而不是符号传输时,禁用双下划线行为。
例如:
db[:abc].insert({"vector_a__c" => "356"})