Де я можу знайти список типів даних, які можна використовувати в Ruby on Rails 4? Як от
textstringintegerfloatdate
Я продовжую дізнаватися про нові, і я хотів би мати список, на який я міг би легко посилатися.
Де я можу знайти список типів даних, які можна використовувати в 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. Для отримання додаткової інформації: