Spec-Zone.ru › Ruby on Rails 6.1

модуль 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
        
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
        
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 176
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
end

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

Spec-Zone.ru

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