Spec-Zone.ru › Ruby on Rails 7.0

module ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods

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

bigserial(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 57
        
bit(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 61
        
bit_varying(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 65
        
box(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 137
        
cidr(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 69
        
circle(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 149
        
citext(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 73
        
daterange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 77
        
enum(*names, **options) Show source
# 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) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 81
        
inet(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 85
        
int4range(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 93
        
int8range(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 97
        
interval(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 89
        
jsonb(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 101
        
line(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 129
        
lseg(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 133
        
ltree(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 105
        
macaddr(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 109
        
money(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 113
        
numrange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 117
        
oid(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 121
        
path(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 141
        
point(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 125
        
polygon(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 145
        
primary_key(name, type = :primary_key, **options) Show source
# 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) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 153
        
timestamptz(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 177
        
tsrange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 157
        
tstzrange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 161
        
tsvector(*names, **options) Show source
# 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