1

如何禁用 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 ...
4

2 回答 2

3

通常,您希望将其包装在标识符中:

db[:abc].insert(Sequel.identifier(:vector_a__c) => "356")

使用字符串作为标识符仅在极少数情况下适用于向后兼容,在这种情况下它是明确的(即 SQL 字符串无效的情况)。

于 2015-04-01T15:39:38.437 回答
1

当您将列名称作为字符串而不是符号传输时,双下划线行为禁用。

例如:

db[:abc].insert({"vector_a__c" => "356"})
于 2015-03-31T10:21:08.833 回答