2013-07-29 3 views
319

Где я могу найти список типов данных, которые могут использоваться в Ruby on Rails 4? Такие, какRails 4: Список доступных типов данных

  • text
  • string
  • integer
  • float
  • date

Я продолжаю узнавать о новых и я хотел бы, чтобы список я мог бы легко Ссылаться на.

+0

возможно дубликат [Где страница документации для типов данных ActiveRecord?] (HTTP://stackoverflow.com/questions/3956186/where-is-the-documentation-page-for-activerecord-data-types) –

+1

@MarkThomas: Не дубликат. Мой вопрос здесь специально для Rails 4. –

+0

Принятый ответ в этом вопросе по существу совпадает с принятым вами ответом. Оба указывают на документы Rails 4. Кроме того, это спорный вопрос, потому что типы данных ActiveRecord не менялись с Rails 3 на Rails 4. –

ответ

547

Здесь все Rails 4 (ActiveRecord миграции): типы данных

  • :binary
  • :boolean
  • :date
  • :datetime
  • :decimal
  • :float
  • :integer
  • :bigint
  • :primary_key
  • :references
  • :string
  • :text
  • :time
  • :timestamp

Источник: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
Это то же самое, что и у Rails 3.

Если вы используете PostgreSQL, вы также можете воспользоваться этим:

  • :hstore
  • :json
  • :jsonb
  • :array
  • :cidr_address
  • :ip_address
  • :mac_address

Они хранятся в виде строк, если вы запустите приложение с базой данных не-PostgreSQL.

Редактировать, 2016-Sep-19:

Там в a lot more Postgres конкретные типы данных в Rails 4 и even more в Rails 5.

+1

Я считаю, что это типы данных, которые поддерживаются во всех базах данных. Однако, как отмечает Питер де Риддер, существуют некоторые типы данных, такие как hstore, которые все еще поддерживаются. –

+0

Вопрос: У документации postgres нет типа данных типа. Но рельсы все еще могут справиться с этим? Что происходит в фоновом режиме? – ahnbizcad

+0

PostgreSQL имеет текстовый тип данных. Под капотом все поля varchar/text являются массивами переменной длины. http://www.postgresql.org/docs/9.3/interactive/datatype-character.html – makhan

5

Rails4 имеет некоторые дополнительные типы данных для Postgres.

Например, railscast # 400 имен двух из них:

Rails 4 имеет поддержку родных типов данных в Postgres, и мы покажем два из них здесь, хотя намного больше поддерживаются: массив и hstore , Мы можем хранить массивы в столбце типа string и указывать тип для hstore.

Кроме того, вы также можете использовать cidr, inet и macaddr. Для получения дополнительной информации:

https://blog.engineyard.com/2013/new-in-rails-4

213

Вы также можете найти его полезным как правило, знают, что эти типы данных используются для:

  • :string - для небольших типов данных, таких как название. (Should you choose string or text?)
  • :text - для более длинных частей текстовых данных, таких как пункт информации
  • :binary - предназначено для хранения данных, таких как изображения, аудио, или фильмы.
  • :boolean - предназначен для хранения истинных или ложных значений.
  • :date - хранить только дату
  • :datetime - хранить дату и время в столбце.
  • :time - это только
  • :timestamp времени - для хранения даты и времени в колонку (What's the difference between datetime and timestamp?)
  • :decimal -. Для знаков после запятой (example of how to use decimals).
  • :float - для десятичных знаков. (What's the difference between decimal and float?)
  • :integer - для целых чисел.
  • :primary_key - уникальный ключ, который позволяет однозначно идентифицировать каждую строку в таблице

Там также ссылки, используемые для создания ассоциаций. Но, I'm not sure this is an actual data type.

Новые рельсы 4 типов данных, доступных в PostgreSQL:

  • :hstore - хранение пар ключ/значение в пределах одного значения (learn more about this new data type)
  • :array - расположение чисел или строк в конкретной строке (learn more about it and see examples)
  • :cidr_address - используются для IPv4 или IPv6 адреса хостов
  • :inet_address - используемый для IPv4 или IPv6 адреса хоста, так же как cidr_address, но она также принимает значения с ненулевыми битами справа от маски подсети
  • :mac_address - используется для MAC-адрес хоста

Узнайте больше о адресных типах данных here и here.

Кроме того, вот официальное руководство по миграции: http://edgeguides.rubyonrails.org/migrations.html

+11

Аплодисменты. +1 для тщательности и ожидания использования. Это UX менталитет прямо там. – ahnbizcad

+4

Абсолютно потрясающий ответ - большое спасибо за это. Ссылки на статьи о различиях буквально выносили вопросы прямо из моего рта. – nlh

+3

Для Postgres дополнительно существует тип 'uuid', который может использоваться как * нормальное поле *, например' t.uuid: name ... 'или как первичный ключ, например' create_table: users, id:: uuid do ... ' или, например, 't.primary_key: id,: uuid,: default => 'uuid_generate_v1()'' – TNT

139

Важно знать не только тип, но отображение этих типов к типам баз данных, тоже:

enter image description here

enter image description here


Источник добавил - Agile Web Development with Rails 4

+1

Мне было бы интересно увидеть тип json в этой таблице, если вы чувствуете к нему –

+2

Вы всегда можете проверить 'NATIVE_DATABASE_TYPES' для необходимого вам адаптера - https://github.com/rails/rails/blob/master /activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L106 – gotqn

+0

Есть ли место в путеводителях или один источник истины для этих вещей с течением времени? – Hugo

66

Вы можете этот список каждый раз, когда вы хотите (даже если у вас нет доступа к Интернету) через:

rails generate model -h 
Смежные вопросы