Rails 4:利用可能なデータ型のリスト


406

Ruby on Rails 4で使用できるデータ型のリストはどこにありますか?といった

  • text
  • string
  • integer
  • float
  • date

私は新しいものについて学び続け、簡単に参照できるリストが欲しいです。



1
@MarkThomas:重複ではありません。ここでの私の質問はRailsの4のために特別である
ニコララウル

その質問で受け入れられた回答は、基本的にあなたの受け入れられた回答と同じです。どちらもRails 4のドキュメントを指しています。また、ActiveRecordのデータ型は、レール4にレール3から変化していなかったので、議論の余地がポイントだ
マーク・トーマス

10
私は、ARデータ型がRails 3とRails 4の間で変化しないことを知らなかったので、この質問/回答はここにあります。
14

回答:


667

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年9月19日:

Rails 4にはさらに多くの postgres固有のデータ型があり、Rails 5にはさらに多くのデータ型があります。


1
これらはすべてのデータベースでサポートされているデータ型だと思います。ただし、Peter de Ridderが言及しているように、まだサポートされているhstoreのようないくつかのデータ型があります。
Althaf Hameez 2013

質問:postgresのドキュメントにtextデータ型がないようです。それでも、レールはそれを処理できますか?バックグラウンドで何が起こっていますか?
ahnbizcad 2014

PostgreSQLにはテキストデータ型があります。内部では、すべてのvarchar / textフィールドは可変長配列です。postgresql.org/docs/9.3/interactive/datatype-character.html
makhan

postgres以外のデータベースを使用していて、アプリケーションのschema_formatが:sqlを使用するように設定されていない場合、schema.rbファイルは:jsonのようなタイプを使用するテーブルをダンプできません。デフォルトのタイプを使用するテーブルのスキーマは引き続きダンプされますが、「テーブルをダンプできませんでした...」のような特別なタイプのテーブルのコメントが表示されます。ここでschema_formatを設定します
bpercevic 2015

また、それらの列は、nilpostgres以外のデータベースで型を持ちます。を使用して、コンソールでタイプを検査できModel.columns_hash["column_name"].typeます。これらは:json列タイプを使用するときに遭遇したことですが、私は間違っている可能性があり、これは誰にも起こらない可能性がありますが、問題が発生した場合に備えて将来の読者に知らせたいと思いました。とにかく、この回答の+1は本当に役に立ちました。
bpercevic 2015

249

また、これらのデータ型が何に使用されているかを一般的に知っておくと便利かもしれません。

関連付けを作成するために使用される参照もあります。しかし、これが実際のデータ型かどうかはわかりません

PostgreSQLで利用可能な新しいRails 4データ型:

  • :hstore-キーと値のペアを単一の値内に格納します(この新しいデータ型の詳細をご覧ください
  • :array-特定の行の数字または文字列の配置(詳細と例を参照
  • :cidr_address -IPv4またはIPv6ホストアドレスに使用
  • :inet_address -cidr_addressと同じIPv4またはIPv6ホストアドレスに使用されますが、ネットマスクの右側にゼロ以外のビットを持つ値も受け入れます
  • :mac_address -MACホストアドレスに使用

アドレスデータ型の詳細については、こちらこちらをご覧ください

また、ここに移行に関する公式ガイドがあります:http : //edgeguides.rubyonrails.org/migrations.html


13
拍手。完全性と使用の予測のための+1。それがUXの考え方です。
ahnbizcad 2014

5
絶対に素晴らしい答え-これに感謝します。相違点に関する記事へのリンクは、質問を文字通り口から出しました。
nlh 2014

3
Postgresのためにさらにそこにあるuuidとして使用することができますタイプの通常のフィールドのようなt.uuid :name... 主のようなキーとして、またはcreate_table :users, id: :uuid do...あるいは例えばt.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
TNT

1
APIドキュメントにActiveRecord::ConnectionAdapters::PostgreSQL::ColumnMethodsリストされているRailsでサポートされている追加のPostgreSQLタイプ。ハイライトが含まれmoneyjsonxmldaterange
エリオット・サイクス

1
はい、uuidがPostgresに追加されましたが、Active Record create()で返されません。その問題はRails 5で修正されましたか?
マーティン・ソマー2017

156

タイプだけでなく、これらのタイプのデータベースタイプへのマッピングも知っておくことが重要です。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


追加されたソース-Rails 4によるアジャイルWeb開発


1
あなたがそれに
気が付い

2
あなたは、常にチェックすることができますNATIVE_DATABASE_TYPES-あなたが必要なアダプタの github.com/rails/rails/blob/master/activerecord/lib/...
gotqn

時間の経過とともに、これらの事柄について、ガイドにスポットがあるか、単一の真の情報源はありますか?
Hugo

81

(インターネットにアクセスできない場合でも)いつでもこのリストにアクセスできます。

rails generate model -h

5

Rails4にはPostgres用のデータ型がいくつか追加されています。

たとえば、railscast#400はそのうちの2つに名前を付けます。

Rails 4はPostgresのネイティブデータ型をサポートしているため、ここではそのうちの2つを示しますが、より多くのものがサポートされています。配列とhstoreです。文字列型の列に配列を格納し、hstoreの型を指定できます。

また、cidr、inet、macaddrも使用できます。詳細については:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.