Де я можу знайти список типів даних, які можна використовувати в Ruby on Rails 4? Як от
text
string
integer
float
date
Я продовжую дізнаватися про нові, і я хотів би мати список, на який я міг би легко посилатися.
Де я можу знайти список типів даних, які можна використовувати в Ruby on Rails 4? Як от
text
string
integer
float
date
Я продовжую дізнаватися про нові, і я хотів би мати список, на який я міг би легко посилатися.
Відповіді:
Ось усі типи даних 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 -19 вересня:
Існує набагато більше специфічних типів даних для постгресів в Rails 4 і навіть більше в Rails 5.
text
типу даних. І все-таки рейки все-таки можуть впоратися? Що відбувається на задньому плані?
nil
у базі даних, що не належить до постгресів. Ви можете перевірити тип на консолі за допомогою Model.columns_hash["column_name"].type
. Це лише речі, з якими я стикався при використанні: тип стовпця json, я можу помилятися, і це може трапитися не з усіма, але я подумав, що повідомляю майбутніх читачів у випадку виникнення проблем. Незважаючи на це, +1 за цю відповідь, тому що вона мені справді допомогла.
Вам також може бути корисно знати, для чого ці типи даних використовуються:
:string
- призначений для малих типів даних, таких як заголовок. ( Чи слід вибрати рядок або текст? ):text
- для довших фрагментів текстових даних, наприклад, абзацу інформації:binary
- призначено для зберігання даних, таких як зображення, аудіо чи фільми.:boolean
- призначено для зберігання істинних або хибних значень.:date
- зберігати тільки дату:datetime
- зберігати дату та час у стовпці. :time
- лише на час:timestamp
- для зберігання дати та часу у стовпці. ( Яка різниця між датою та часом? ):decimal
- призначений для десяткових знаків ( приклад використання децималів ).:float
- для десятків. ( Яка різниця між десятковою та плавкою? ):integer
- для цілих чисел.:primary_key
- унікальний ключ, за допомогою якого можна однозначно ідентифікувати кожен рядок таблиціІснують також посилання, які використовуються для створення асоціацій. Але я не впевнений, що це фактичний тип даних .
У PostgreSQL доступні нові типи даних Rails 4:
:hstore
- зберігання пар ключів / значень у межах одного значення ( дізнайтеся більше про цей новий тип даних ):array
- розташування чисел або рядків у певному рядку ( дізнайтеся більше про нього та подивіться приклади ):cidr_address
- використовується для IPv4 або IPv6 адрес хосту:inet_address
- використовується для IPv4 або IPv6 адрес хостів, як і cidr_address, але він також приймає значення з ненульовими бітами праворуч від мережевої маски:mac_address
- використовується для адрес хостів MACДізнайтеся більше про типи даних адреси тут і тут .
Також ось офіційний посібник з міграцій: http://edgeguides.rubyonrails.org/migrations.html
uuid
тип, який може використовуватися як звичайне поле, наприклад, t.uuid :name...
або як первинний ключ, наприклад, create_table :users, id: :uuid do...
наприклад,t.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
ActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethods
. Ось найголовніші з них money
, json
, xml
,daterange
Важливо знати не тільки типи, але і відображення цих типів у типи баз даних:
Додано джерело - Agile Web Development with Rails 4
NATIVE_DATABASE_TYPES
адаптер - github.com/rails/rails/blob/master/activerecord/lib/…
Rails4 має деякі додані типи даних для Postgres.
Наприклад, у рейловому каналі № 400 названо два з них:
У Rails 4 є підтримка нативних типів даних у Postgres, і ми покажемо два з них тут, хоча підтримується набагато більше: array та hstore. Ми можемо зберігати масиви у стовпці типу рядка та визначати тип для hstore.
Крім того, ви також можете використовувати cidr, inet та macaddr. Для отримання додаткової інформації: