Active Record PostgreSQL Adapter
PostgreSQL 介面使用原生 C (github.com/ged/ruby-pg) 驅動程式。
選項
-
:host
- 預設為 /tmp 中的 Unix-domain socket。在沒有 Unix-domain socket 的機器上,預設會連線到 localhost。 -
:port
- 預設為 5432。 -
:username
- 預設與執行應用程式的使用者作業系統名稱相同。 -
:password
- 如果伺服器要求密碼驗證,則會使用密碼。 -
:database
- 預設與使用者名稱相同。 -
:schema_search_path
- 連線的選用 schema 搜尋路徑,以逗號分隔的 schema 名稱字串提供。這與:schema_order
選項向下相容。 -
:encoding
- 連線中SET client_encoding TO <encoding>
呼叫中使用的選用用戶端編碼。 -
:min_messages
- 連線中SET client_min_messages TO <min_messages>
呼叫中使用的選用用戶端最小訊息。 -
:variables
- 連線中SET SESSION key = val
呼叫中使用的選用其他參數雜湊。 -
:insert_returning
- 控制INSERT
陳述式中使用RETURNING
的選用布林值,預設為 true。
任何進一步的選項都會用作 libpq 的連線參數。請參閱 www.postgresql.org/docs/current/static/libpq-connect.html 以取得參數清單。
此外,libpq 的預設連線參數可透過環境變數設定。請參閱 www.postgresql.org/docs/current/static/libpq-envars.html 。
- A
- C
- D
- E
- I
- M
- N
- R
- S
-
- session_auth=,
- set_standard_conforming_strings,
- supports_advisory_locks?,
- supports_bulk_alter?,
- supports_check_constraints?,
- supports_comments?,
- supports_common_table_expressions?,
- supports_datetime_with_precision?,
- supports_ddl_transactions?,
- supports_deferrable_constraints?,
- supports_exclusion_constraints?,
- supports_explain?,
- supports_expression_index?,
- supports_extensions?,
- supports_foreign_keys?,
- supports_foreign_tables?,
- supports_index_include?,
- supports_index_sort_order?,
- supports_insert_conflict_target?,
- supports_insert_on_conflict?,
- supports_insert_on_duplicate_skip?,
- supports_insert_on_duplicate_update?,
- supports_insert_returning?,
- supports_json?,
- supports_lazy_transactions?,
- supports_materialized_views?,
- supports_nulls_not_distinct?,
- supports_optimizer_hints?,
- supports_partial_index?,
- supports_partitioned_indexes?,
- supports_pgcrypto_uuid?,
- supports_restart_db_transaction?,
- supports_savepoints?,
- supports_transaction_isolation?,
- supports_unique_constraints?,
- supports_validate_constraints?,
- supports_views?,
- supports_virtual_columns?
- U
- ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting
- ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements
- ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
常數
ADAPTER_NAME | = | "PostgreSQL" |
DEADLOCK_DETECTED | = | "40P01" |
DUPLICATE_DATABASE | = | "42P04" |
FOREIGN_KEY_VIOLATION | = | "23503" |
LOCK_NOT_AVAILABLE | = | "55P03" |
NATIVE_DATABASE_TYPES | = | { primary_key: "bigserial primary key", string: { name: "character varying" }, text: { name: "text" }, integer: { name: "integer", limit: 4 }, bigint: { name: "bigint" }, float: { name: "float" }, decimal: { name: "decimal" }, datetime: {}, # set dynamically based on datetime_type timestamp: { name: "timestamp" }, timestamptz: { name: "timestamptz" }, time: { name: "time" }, date: { name: "date" }, daterange: { name: "daterange" }, numrange: { name: "numrange" }, tsrange: { name: "tsrange" }, tstzrange: { name: "tstzrange" }, int4range: { name: "int4range" }, int8range: { name: "int8range" }, binary: { name: "bytea" }, boolean: { name: "boolean" }, xml: { name: "xml" }, tsvector: { name: "tsvector" }, hstore: { name: "hstore" }, inet: { name: "inet" }, cidr: { name: "cidr" }, macaddr: { name: "macaddr" }, uuid: { name: "uuid" }, json: { name: "json" }, jsonb: { name: "jsonb" }, ltree: { name: "ltree" }, citext: { name: "citext" }, point: { name: "point" }, line: { name: "line" }, lseg: { name: "lseg" }, box: { name: "box" }, path: { name: "path" }, polygon: { name: "polygon" }, circle: { name: "circle" }, bit: { name: "bit" }, bit_varying: { name: "bit varying" }, money: { name: "money" }, interval: { name: "interval" }, oid: { name: "oid" }, enum: {} # special type https://postgresql.dev.org.tw/docs/current/datatype-enum.html } |
NOT_NULL_VIOLATION | = | "23502" |
NUMERIC_VALUE_OUT_OF_RANGE | = | "22003" |
QUERY_CANCELED | = | "57014" |
SERIALIZATION_FAILURE | = | "40001" |
UNIQUE_VIOLATION | = | "23505" |
VALUE_LIMIT_VIOLATION | = | "22001" |
請參閱 www.postgresql.org/docs/current/static/errcodes-appendix.html |
類別公開方法
create_unlogged_tables 連結
PostgreSQL 允許建立「未記錄」的資料表,不會在 PostgreSQL 寫入前記錄檔中記錄資料。這可能會讓資料表速度更快,但如果資料庫發生故障,資料遺失的風險會大幅增加。因此,不應在生產環境中使用此功能。如果您希望在測試環境中建立的所有資料表都是未記錄的,可以在 test.rb 檔案中新增下列內容
ActiveSupport.on_load(:active_record_postgresqladapter) do
self.create_unlogged_tables = true
end
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 116 class_attribute :create_unlogged_tables, default: false
datetime_type 連結
PostgreSQL 支援多種資料類型。預設情況下,如果您在遷移中使用 datetime
,Rails 會將其轉換為 PostgreSQL 的「無時區時間戳記」。在初始化程式中變更此設定,以使用其他 NATIVE_DATABASE_TYPES
。例如,將 DateTime 儲存為「含時區時間戳記」
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.datetime_type = :timestamptz
或者,如果您要新增自訂類型
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:my_custom_type] = { name: "my_custom_type_name" }
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.datetime_type = :my_custom_type
如果您使用 :ruby
作為 config.active_record.schema_format
,並且變更此設定,您應該立即執行 bin/rails db:migrate
,以更新 schema.rb 中的類型。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 134 class_attribute :datetime_type, default: :timestamp
dbconsole(config, options = {}) 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 84 def dbconsole(config, options = {}) pg_config = config.configuration_hash ENV["PGUSER"] = pg_config[:username] if pg_config[:username] ENV["PGHOST"] = pg_config[:host] if pg_config[:host] ENV["PGPORT"] = pg_config[:port].to_s if pg_config[:port] ENV["PGPASSWORD"] = pg_config[:password].to_s if pg_config[:password] && options[:include_password] ENV["PGSSLMODE"] = pg_config[:sslmode].to_s if pg_config[:sslmode] ENV["PGSSLCERT"] = pg_config[:sslcert].to_s if pg_config[:sslcert] ENV["PGSSLKEY"] = pg_config[:sslkey].to_s if pg_config[:sslkey] ENV["PGSSLROOTCERT"] = pg_config[:sslrootcert].to_s if pg_config[:sslrootcert] if pg_config[:variables] ENV["PGOPTIONS"] = pg_config[:variables].filter_map do |name, value| "-c #{name}=#{value.to_s.gsub(/[ \\]/, '\\\\\0')}" unless value == ":default" || value == :default end.join(" ") end find_cmd_and_exec("psql", config.database) end
new(...) 連結
初始化並連線 PostgreSQL 介面。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 322 def initialize(...) super conn_params = @config.compact # Map ActiveRecords param names to PGs. conn_params[:user] = conn_params.delete(:username) if conn_params[:username] conn_params[:dbname] = conn_params.delete(:database) if conn_params[:database] # Forward only valid config params to PG::Connection.connect. valid_conn_param_keys = PG::Connection.conndefaults_hash.keys + [:requiressl] conn_params.slice!(*valid_conn_param_keys) @connection_parameters = conn_params @max_identifier_length = nil @type_map = nil @raw_connection = nil @notice_receiver_sql_warnings = [] @use_insert_returning = @config.key?(:insert_returning) ? self.class.type_cast_config_to_boolean(@config[:insert_returning]) : true end
new_client(conn_params) 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 68 def new_client(conn_params) PG.connect(**conn_params) rescue ::PG::Error => error if conn_params && conn_params[:dbname] == "postgres" raise ActiveRecord::ConnectionNotEstablished, error.message elsif conn_params && conn_params[:dbname] && error.message.include?(conn_params[:dbname]) raise ActiveRecord::NoDatabaseError.db_error(conn_params[:dbname]) elsif conn_params && conn_params[:user] && error.message.include?(conn_params[:user]) raise ActiveRecord::DatabaseConnectionError.username_error(conn_params[:user]) elsif conn_params && conn_params[:host] && error.message.include?(conn_params[:host]) raise ActiveRecord::DatabaseConnectionError.hostname_error(conn_params[:host]) else raise ActiveRecord::ConnectionNotEstablished, error.message end end
實例公開方法
active?() 連結
此連線是否處於活動狀態且已準備好執行查詢?
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 346 def active? @lock.synchronize do return false unless @raw_connection @raw_connection.query ";" end true rescue PG::Error false end
add_enum_value(type_name, value, options = {}) 連結
將列舉值新增至現有的列舉類型。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 570 def add_enum_value(type_name, value, options = {}) before, after = options.values_at(:before, :after) sql = +"ALTER TYPE #{quote_table_name(type_name)} ADD VALUE '#{value}'" if before && after raise ArgumentError, "Cannot have both :before and :after at the same time" elsif before sql << " BEFORE '#{before}'" elsif after sql << " AFTER '#{after}'" end execute(sql).tap { reload_type_map } end
create_enum(name, values, **options) 連結
根據名稱和值陣列,建立一個列舉類型。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 525 def create_enum(name, values, **options) sql_values = values.map { |s| quote(s) }.join(", ") scope = quoted_scope(name) query = <<~SQL DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_type t JOIN pg_namespace n ON t.typnamespace = n.oid WHERE t.typname = #{scope[:name]} AND n.nspname = #{scope[:schema]} ) THEN CREATE TYPE #{quote_table_name(name)} AS ENUM (#{sql_values}); END IF; END $$; SQL internal_exec_query(query).tap { reload_type_map } end
disable_extension(name, force: false) 連結
從資料庫中移除擴充功能。
:force
-
設為
:cascade
以同時刪除相依物件。預設為 false。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 483 def disable_extension(name, force: false) internal_exec_query("DROP EXTENSION IF EXISTS \"#{name}\"#{' CASCADE' if force == :cascade}").tap { reload_type_map } end
disconnect!() 連結
如果已連線,則中斷與資料庫的連線。否則,此方法不會執行任何動作。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 383 def disconnect! @lock.synchronize do super @raw_connection&.close rescue nil @raw_connection = nil end end
drop_enum(name, values = nil, **options) 連結
刪除列舉類型。
如果提供 if_exists: true
選項,則僅當列舉類型存在時才會刪除。否則,如果列舉類型不存在,則會引發錯誤。
如果存在,則會忽略 values
參數。在遷移的 change
方法中提供此參數可能很有用,以便可以還原。在這種情況下,values
將由 create_enum
使用。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 555 def drop_enum(name, values = nil, **options) query = <<~SQL DROP TYPE#{' IF EXISTS' if options[:if_exists]} #{quote_table_name(name)}; SQL internal_exec_query(query).tap { reload_type_map } end
enable_extension(name, **) 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 470 def enable_extension(name, **) schema, name = name.to_s.split(".").values_at(-2, -1) sql = +"CREATE EXTENSION IF NOT EXISTS \"#{name}\"" sql << " SCHEMA #{schema}" if schema internal_exec_query(sql).tap { reload_type_map } end
enum_types() 連結
傳回已定義列舉類型及其值的清單。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 502 def enum_types query = <<~SQL SELECT type.typname AS name, type.OID AS oid, n.nspname AS schema, string_agg(enum.enumlabel, ',' ORDER BY enum.enumsortorder) AS value FROM pg_enum AS enum JOIN pg_type AS type ON (type.oid = enum.enumtypid) JOIN pg_namespace n ON type.typnamespace = n.oid WHERE n.nspname = ANY (current_schemas(false)) GROUP BY type.OID, n.nspname, type.typname; SQL internal_exec_query(query, "SCHEMA", allow_retry: true, materialize_transactions: false).cast_values.each_with_object({}) do |row, memo| name, schema = row[0], row[2] schema = nil if schema == current_schema full_name = [schema, name].compact.join(".") memo[full_name] = row.last end.to_a end
extension_available?(name) 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 489 def extension_available?(name) query_value("SELECT true FROM pg_available_extensions WHERE name = #{quote(name)}", "SCHEMA") end
extension_enabled?(name) 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 493 def extension_enabled?(name) query_value("SELECT installed_version IS NOT NULL FROM pg_available_extensions WHERE name = #{quote(name)}", "SCHEMA") end
extensions() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 497 def extensions internal_exec_query("SELECT extname FROM pg_extension", "SCHEMA", allow_retry: true, materialize_transactions: false).cast_values end
index_algorithms() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 289 def index_algorithms { concurrently: "CONCURRENTLY" } end
max_identifier_length() 連結
傳回 PostgreSQL 支援的已設定識別長度
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 600 def max_identifier_length @max_identifier_length ||= query_value("SHOW max_identifier_length", "SCHEMA").to_i end
rename_enum(name, options = {}) 連結
將現有的列舉類型重新命名為其他名稱。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 563 def rename_enum(name, options = {}) to = options.fetch(:to) { raise ArgumentError, ":to is required" } exec_query("ALTER TYPE #{quote_table_name(name)} RENAME TO #{to}").tap { reload_type_map } end
rename_enum_value(type_name, options = {}) 連結
在現有的列舉類型上重新命名列舉值。
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 586 def rename_enum_value(type_name, options = {}) unless database_version >= 10_00_00 # >= 10.0 raise ArgumentError, "Renaming enum values is only supported in PostgreSQL 10 or later" end from = options.fetch(:from) { raise ArgumentError, ":from is required" } to = options.fetch(:to) { raise ArgumentError, ":to is required" } execute("ALTER TYPE #{quote_table_name(type_name)} RENAME VALUE '#{from}' TO '#{to}'").tap { reload_type_map } end
reset!() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 368 def reset! @lock.synchronize do return connect! unless @raw_connection unless @raw_connection.transaction_status == ::PG::PQTRANS_IDLE @raw_connection.query "ROLLBACK" end @raw_connection.query "DISCARD ALL" super end end
session_auth=(user) 連結
設定此階段的授權使用者
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 605 def session_auth=(user) clear_cache! internal_execute("SET SESSION AUTHORIZATION #{user}", nil, materialize_transactions: true) end
set_standard_conforming_strings() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 409 def set_standard_conforming_strings internal_execute("SET standard_conforming_strings = on") end
supports_advisory_locks?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 417 def supports_advisory_locks? true end
supports_bulk_alter?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 190 def supports_bulk_alter? true end
supports_check_constraints?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 222 def supports_check_constraints? true end
supports_comments?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 254 def supports_comments? true end
supports_common_table_expressions?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 448 def supports_common_table_expressions? true end
supports_datetime_with_precision?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 246 def supports_datetime_with_precision? true end
supports_ddl_transactions?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 413 def supports_ddl_transactions? true end
supports_deferrable_constraints?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 238 def supports_deferrable_constraints? true end
supports_exclusion_constraints?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 226 def supports_exclusion_constraints? true end
supports_explain?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 421 def supports_explain? true end
supports_expression_index?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 210 def supports_expression_index? true end
supports_extensions?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 425 def supports_extensions? true end
supports_foreign_keys?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 218 def supports_foreign_keys? true end
supports_foreign_tables?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 433 def supports_foreign_tables? true end
supports_index_include?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 206 def supports_index_include? database_version >= 11_00_00 # >= 11.0 end
supports_index_sort_order?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 194 def supports_index_sort_order? true end
supports_insert_on_conflict?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 270 def supports_insert_on_conflict? database_version >= 9_05_00 # >= 9.5 end
supports_insert_returning?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 266 def supports_insert_returning? true end
supports_json?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 250 def supports_json? true end
supports_lazy_transactions?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 452 def supports_lazy_transactions? true end
supports_materialized_views?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 429 def supports_materialized_views? true end
supports_nulls_not_distinct?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 285 def supports_nulls_not_distinct? database_version >= 15_00_00 # >= 15.0 end
supports_optimizer_hints?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 441 def supports_optimizer_hints? unless defined?(@has_pg_hint_plan) @has_pg_hint_plan = extension_available?("pg_hint_plan") end @has_pg_hint_plan end
supports_partial_index?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 202 def supports_partial_index? true end
supports_partitioned_indexes?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 198 def supports_partitioned_indexes? database_version >= 11_00_00 # >= 11.0 end
supports_pgcrypto_uuid?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 437 def supports_pgcrypto_uuid? database_version >= 9_04_00 # >= 9.4 end
supports_restart_db_transaction?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 262 def supports_restart_db_transaction? database_version >= 12_00_00 # >= 12.0 end
supports_savepoints?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 258 def supports_savepoints? true end
supports_transaction_isolation?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 214 def supports_transaction_isolation? true end
supports_unique_constraints?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 230 def supports_unique_constraints? true end
supports_validate_constraints?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 234 def supports_validate_constraints? true end
supports_views?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 242 def supports_views? true end
supports_virtual_columns?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 277 def supports_virtual_columns? database_version >= 12_00_00 # >= 12.0 end
use_insert_returning?() 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 610 def use_insert_returning? @use_insert_returning end