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 に答える