Spec-Zone.ru › Ruby on Rails 6.0

module ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods

Открытые методы экземпляра

bigserial(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 60
        
bit(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 64
        
bit_varying(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 68
        
box(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 140
        
cidr(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 72
        
circle(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 152
        
citext(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 76
        
daterange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 80
        
hstore(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 84
        
inet(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 88
        
int4range(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 96
        
int8range(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 100
        
interval(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 92
        
jsonb(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 104
        
line(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 132
        
lseg(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 136
        
ltree(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 108
        
macaddr(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 112
        
money(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 116
        
numrange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 120
        
oid(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 124
        
path(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 144
        
point(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 128
        
polygon(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 148
        
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 156
        
tsrange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 160
        
tstzrange(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 164
        
tsvector(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 168
        
uuid(*names, **options) Show source
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 172
        
xml(*names, **options) Show source
# 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–2019 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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