为 Sequel 禁用双下划线行为
Disable double underscore behaviour for Sequel
如何禁用 Sequel 的双下划线行为?
我使用遗留数据库架构,其中有很多名称中带有“__”的列。
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 ...
当您将列名称作为字符串而非符号传输时,双下划线行为将被禁用。
例如:
db[:abc].insert({"vector_a__c" => "356"})
一般来说,您希望将其包装在标识符中:
db[:abc].insert(Sequel.identifier(:vector_a__c) => "356")
使用字符串作为标识符仅在极少数情况下适用于向后兼容,在这种情况下它是明确的(即 SQL 字符串无效)。
如何禁用 Sequel 的双下划线行为?
我使用遗留数据库架构,其中有很多名称中带有“__”的列。
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 ...
当您将列名称作为字符串而非符号传输时,双下划线行为将被禁用。
例如:
db[:abc].insert({"vector_a__c" => "356"})
一般来说,您希望将其包装在标识符中:
db[:abc].insert(Sequel.identifier(:vector_a__c) => "356")
使用字符串作为标识符仅在极少数情况下适用于向后兼容,在这种情况下它是明确的(即 SQL 字符串无效)。