модуль ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods
Общедоступные методы экземпляра
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 54
def bigserial(*args, **options)
args.each { |name| column(name, :bigserial, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 58
def bit(*args, **options)
args.each { |name| column(name, :bit, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 62
def bit_varying(*args, **options)
args.each { |name| column(name, :bit_varying, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 134
def box(*args, **options)
args.each { |name| column(name, :box, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 66
def cidr(*args, **options)
args.each { |name| column(name, :cidr, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 146
def circle(*args, **options)
args.each { |name| column(name, :circle, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 70
def citext(*args, **options)
args.each { |name| column(name, :citext, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 74
def daterange(*args, **options)
args.each { |name| column(name, :daterange, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 78
def hstore(*args, **options)
args.each { |name| column(name, :hstore, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 82
def inet(*args, **options)
args.each { |name| column(name, :inet, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 90
def int4range(*args, **options)
args.each { |name| column(name, :int4range, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 94
def int8range(*args, **options)
args.each { |name| column(name, :int8range, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 86
def interval(*args, **options)
args.each { |name| column(name, :interval, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 98
def jsonb(*args, **options)
args.each { |name| column(name, :jsonb, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 126
def line(*args, **options)
args.each { |name| column(name, :line, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 130
def lseg(*args, **options)
args.each { |name| column(name, :lseg, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 102
def ltree(*args, **options)
args.each { |name| column(name, :ltree, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 106
def macaddr(*args, **options)
args.each { |name| column(name, :macaddr, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 110
def money(*args, **options)
args.each { |name| column(name, :money, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 114
def numrange(*args, **options)
args.each { |name| column(name, :numrange, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 118
def oid(*args, **options)
args.each { |name| column(name, :oid, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 138
def path(*args, **options)
args.each { |name| column(name, :path, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 122
def point(*args, **options)
args.each { |name| column(name, :point, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 142
def polygon(*args, **options)
args.each { |name| column(name, :polygon, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 46
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, например.
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 150
def serial(*args, **options)
args.each { |name| column(name, :serial, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 154
def tsrange(*args, **options)
args.each { |name| column(name, :tsrange, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 158
def tstzrange(*args, **options)
args.each { |name| column(name, :tstzrange, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 162
def tsvector(*args, **options)
args.each { |name| column(name, :tsvector, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 166
def uuid(*args, **options)
args.each { |name| column(name, :uuid, options) }
end # File activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb, line 170
def xml(*args, **options)
args.each { |name| column(name, :xml, options) }
end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.