Rails基礎③ モデルの作成
モデルの作成
$ rails generate model 名前 [カラム名:型] [オプション]
generateはgで省略することが出来るので、以下のようにも書ける
$ rails g model 名前 [カラム名:型] [オプション]
データ型
データ型 | 説明 |
---|---|
string | 文字列 |
text | 長い文字列 |
integer | 整数 |
float | 浮動小数 |
decimal | 精度の高い小数 |
datetime | 日時 |
timestamp | より細かい日時 |
time | 時間 |
date | 日付 |
binary | バイナリデータ |
boolean | Boolean型 |
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
skip-namespace | 名前空間をスキップする | |
old-style-hash | 古いハッシュの形式を使う | |
-o, -orm=名前 | 使用するO/Rマッパー | active_record |
migration | マイグレーションファイルを生成するか | true |
timestamps | true | |
parent=名前 | ||
indexes | true | |
-t, test-frameword=名前 | 使用するテストフレームワーク | test_unit |
fixtures | フィクスチャを生成するか | true |
-r, fixture-replacement=名前 | フィクスチャを変更 | |
-f, force | ファイルが存在する場合に上書き | |
-q, quiet | 進捗状況を非表示 | |
-p, pretend | ドライラン | |
-s, skip | 既に存在するファイルについてはスキップ | |
-h, help | ヘルプを表示 |
例えば、タイトルと記事を持つブログアプリの場合
$ rails g model Post title:string body:text
また、モデルは個々のデータ構造を定義するため、名前を単数形にする。
その後、データ構造を反映させるために
$ rails db:migrate
を実行する。
データの格納
コンソールの起動
$ rails console
もしくは、省略記法を利用して
$ rails c
コンソールからデータを登録する
タイトル:title1
、内容をbody1
として登録したい場合、
コンソール上で
> p = Post.new(title: 'title 1', body: 'body 1') > p.save
と記述する。
Postは先程のモデルにつけた名前を指定。UserならUser.newとなる。
Post.new と p.save をわけずに、一度に書くことができる
> Post.create(title: 'title 2', body: 'body 2')
このように、SQLを発行しなくてもデータを格納できる仕組みを Active Record という。
Active Recordとは
Railsが採用しているO/Rマッパーのこと。 Railsでは、テーブルごとに作成されたモデルクラスを通じてデータベースに接続する。
O/Rマッパーとは?
O/R(Object/Relational)マッピングの考えに基づいて実装されたライブラリ。 オブジェクト指向プログラミング言語からRDBにアクセスする際の架け橋となる仕組みのこと。 プログラミング言語で扱うクラス・オブジェクトとRDBで扱うテーブル同士のリレーションが異なる仕組みのため、 その違いを吸収するために考えられた。
Active Recordの主な機能
コンソールを抜ける
> quit
とすれば、コンソールから抜けることができる。
モデルクラスとテーブルの命名ルール
モデルクラス名は単数形、テーブル名は複数形で表現すること。
2つ以上の単語を組み合わせたモデルクラスの場合、 テーブル名はアンダースコアで繋げた最後の単語を複数形とする決まり。
モデルクラス名 | テーブル名 |
---|---|
User | users |
UserItem | user_items |
テーブルのカラム名の命名ルール
ActiveRecordでは、レコードを識別するためのカラムはデフォルトでid
となる。
ActiveRecordでテーブルを作成すると、自動的に追加される。
また、created_at
、updated_at
というカラムも同時に追加され、レコードの作成日時と更新日時が自動的に設定されるようになっている。
参考
いつもお世話になってます。