[解決済み] Railsのカラムタイプに関するドキュメントはありますか?
質問
シンプルなタイプのリスト以外のものを探しています。 このページにある :
<ブロッククオートprimary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean, :primary_key。
しかし、実際にそのようなドキュメントがあるのでしょうか? を定義しています。 これらのフィールドは?
具体的には
-
との違いは何ですか?
:string
と:text
? -
間
:float
と:decimal
? -
の特徴は何ですか?
:time
,:timestamp
および:datetime
?
これらのタイプのニュアンスは、どこかに文書化されているのでしょうか?
EDIT
DBプラットフォームの実装のポイントは、私が質問しようとしていることとは無関係です。
もし、例えば
:datetime
がRailsのドキュメントで意図する意味が定義されていない場合、db-adapter-writersは何を基準に対応するカラムタイプを選択するのでしょうか?
どのように解決するのか?
個人の経験から構築されたガイドライン。
- 文字列 :
- 255文字まで(DBMSによって異なる)
- 短いテキストフィールド(名前、電子メールなど)に使用します。
- テキスト :
- 長さ無制限(DBMSに依存)
- コメントやブログの投稿などに使用します。一般的な経験則:textareaで取り込まれる場合はTextを使用する。テキストフィールドを使った入力には、Stringを使う。
- 整数 :
- 整数
- フロート :
- 浮動小数点精度で格納された10進数
- 精度が固定されているため、計算によっては問題が発生する場合があります。
- 10進数 :
- 10進数は、計算で必要とされる精度に応じて変化して保存されます。
- 参照 これ の記事で、浮動小数点と小数の違いの例と詳細な解説を紹介しています。
- ブーリアン :
- 真/偽の属性を格納するために使用する(すなわち、オン/オフのような2つの状態のみを持つもの)。
- バイナリ :
- というデータの塊で、画像、動画、その他のファイルをそのままの生の形式で保存するために使用します。 ブロブ
- :primary_key
-
このデータ型はプレースホルダーで、Railsはあなたの選んだデータベースが必要とする主キーのデータ型に変換します (例.
serial primary key
の場合、postgreSQL)。この使い方はやや複雑なので、お勧めしません。 -
モデル制約と移行制約を使用する(例えば
validates_uniqueness_of
とadd_index
と共に:unique => true
オプション) の代わりに、独自のフィールドで主キー機能をシミュレートすることができます。 - 日付 :
- 日付(年、月、日)のみを格納する。
- 時間 :
- 時間(時、分、秒)のみを格納する
- 日付時間 :
- 日付と時刻の両方を格納する
- タイムスタンプ
- 日付と時刻の両方を格納する
- 注: Railsでは、TimestampとDateTimeはどちらも同じ意味です(日付と時刻の両方を保存するにはどちらかの型を使用します)。なぜ両方が存在するのかというTL;DRの説明については、一番下の段落を読んでください。
これらの型はよく混乱するものです。なぜ、これらに関する公式のドキュメントがないのか、本当にわかりません。また、あなたが言及したデータベースアダプタは、Railsを書いた人たちが書いたものなので、おそらくアダプタを書くときに参考になるようなドキュメントは必要なかったのだと想像します。これがお役に立てれば幸いです。
注意: 両方の
:DateTime
と
:Timestamp
は、私が調べたところでは、主にデータベースシステムとの互換性のためにRailsに含まれているようです。たとえば、MySQLの
TIMESTAMP
のデータ型は unix タイムスタンプとして保存されます。その有効範囲は 1970 年から 2038 年までで、時刻は最後の
エポック
これは標準とされているが、実際にはシステムによって異なることがある。MySQL は後に
DATETIME
データ型は、秒単位で保存されます (5.6.4 以降はオプションで小数点以下の秒も可能)。
サイズアップ
. その
TIMESTAMP
のデータ型は後方互換性のために残された。他のデータベースシステムも同様の進化を遂げた。Railsは複数の標準が存在することを認識し、その両方へのインターフェイスを提供しました。しかし、Rails ActiveRecordのデフォルトでは、どちらのデータ型も
:Timestamp
と
:DateTime
に格納されている UTC 日付を、MySql の
DATETIME
そのため、Railsプログラマにとって機能的な違いはありません。これらは
希望
を区別することができます。(より詳細な説明は
これ
SOの回答)。
関連
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み] Ruby on Railsのマイグレーションで、カラムをユニークにしてインデックスを作成するにはどうすればよいですか?
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】Rails 4で参照列のマイグレーションを追加する
-
[解決済み】Rails: railsのモデルのデフォルトのソート順?
-
[解決済み】Rails: モデルがすでに存在するときに`rails generate scaffold`を実行するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】修正方法:エラー:'<ファイル名>'にチェックアウトされたコミットがない fatal: コマンドプロンプトで "git add ." を入力するとファイルの追加に失敗する
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Rails 4で、以前のバージョンのRailsでattr_accessibleを使用していた状況に遭遇した場合、Forbidden Attributes Errorが発生する。
-
[解決済み] Ruby on Railsで、DateTime、Timestamp、Time、Dateの違いは何ですか?