Spec-Zone.ru › Ruby on Rails 7.2

модуль ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods

Публичные методы экземпляра

bigserial(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 57
        
bit(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 61
        
bit_varying(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 65
        
box(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 137
        
cidr(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 69
        
circle(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 149
        
citext(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 73
        
daterange(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 77
        
enum(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 184
included do
  define_column_methods :bigserial, :bit, :bit_varying, :cidr, :citext, :daterange,
    :hstore, :inet, :interval, :int4range, :int8range, :jsonb, :ltree, :macaddr,
    :money, :numrange, :oid, :point, :line, :lseg, :box, :path, :polygon, :circle,
    :serial, :tsrange, :tstzrange, :tsvector, :uuid, :xml, :timestamptz, :enum
end
hstore(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 81
        
inet(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 85
        
int4range(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 93
        
int8range(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 97
        
interval(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 89
        
jsonb(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 101
        
line(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 129
        
lseg(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 133
        
ltree(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 105
        
macaddr(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 109
        
money(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 113
        
numrange(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 117
        
oid(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 121
        
path(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 141
        
point(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 125
        
polygon(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 145
        
primary_key(name, type = :primary_key, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 48
def primary_key(name, type = :primary_key, **options)
  if type == :uuid
    options[:default] = options.fetch(:default, "gen_random_uuid()")
  end

  super
end

Определяет поле первичного ключа. Поддерживается использование нативного типа PostgreSQL UUID, и его можно использовать, определяя ваши таблицы следующим образом:

create_table :stuffs, id: :uuid do |t|
  t.string :content
  t.timestamps
end

По умолчанию это будет использовать функцию gen_random_uuid() из расширения pgcrypto. Поскольку это расширение доступно только в PostgreSQL 9.4 и выше, для более ранних версий можно явно установить значение по умолчанию, чтобы использовать uuid_generate_v4() из расширения uuid-ossp вместо него:

create_table :stuffs, id: false do |t|
  t.primary_key :id, :uuid, default: "uuid_generate_v4()"
  t.uuid :foo_id
  t.timestamps
end

Для включения соответствующего расширения, что является обязательным условием, используйте метод enable_extension в своих миграциях.

Чтобы использовать первичный ключ UUID без каких-либо расширений, установите параметр :default в nil.

create_table :stuffs, id: false do |t|
  t.primary_key :id, :uuid, default: nil
  t.uuid :foo_id
  t.timestamps
end

Вы также можете передать пользовательскую хранимую процедуру, возвращающую UUID, или использовать другую функцию генерации UUID из другой библиотеки.

Обратите внимание, что установка значения по умолчанию первичного ключа UUID в nil потребует от вас гарантировать, что вы всегда предоставляете значение UUID перед сохранением записи (так как первичные ключи не могут быть nil). Это можно сделать, например, с помощью метода SecureRandom.uuid и обратного вызова before_save.

Вызывает метод суперкласса
serial(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 153
        
timestamptz(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 177
        
END_OF_DOCUMENT_MARKER
tsrange(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 157
        
tstzrange(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 161
        
tsvector(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 165
        
uuid(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 169
        
xml(*names, **options) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 173
        

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API