「ActiveRecord(アクティブレコード)」は、「Ruby on Rails」が正式に採用しているO/Rマッパーライブラリになります。
「O/Rマッパー」については、下記の記事でも解説しています。
テーブルごとに作成したモデルクラスを通じて、テーブルにアクセスすることになります。
機能
- SQLを書かなくても、データの検索、登録、更新、削除が可能
- RDBMSを「モデルクラス」として定義する。
- データを検証できる。
ActiveRecordのルール
モデルクラス
- 必ず「ActiveRecord::Base」クラスを継承する。
- モデルクラス名は、単数形(例:User)
- 複数の単語をつなげる場合は、キャメルケース記法をする。(例:UserMaster)
データベース
- レコードを識別するためのカラム名は、デフォルトで「id」となる。(特に指定することなく自動生成される。)
- 「created_at:作成日時」、「updated_at:更新日時」というカラムも自動生成される。
- テーブル名は複数形(例:users)
- 複数の単語をつなげる場合は、スネークケース記法をする。(例:user_master)
テーブルを作成する。
1.「モデルクラス」を作る。
構文
1 |
rails g model モデル名 カラム名1:データ型1 カラム名2:データ型2 |
指定できるデータ型の種類
種類 | 説明 | SQLiteのデータ型 |
---|---|---|
integer | 整数 | integer |
float | 小数 | real |
string | 固定長文字列 | varchar |
text | 固定長でない文字列 | text |
例:Userという「モデルクラス」を作ります。
モデルクラス以外にも、色々なファイルが自動生成されます。
作成されたファイル | 説明 |
---|---|
db/migrate/20180619102840_create_users.rb | マイグレーションファイル、作成日時がファイル名の先頭に付く。 |
app/models/user.rb | 「モデルクラス」、このクラスを通じてRailsはテーブルにアクセスします。 |
test/models/user_test.rb | モデルクラスのテストコードの雛形 |
test/fixtures/users.yml | 「フィクスチャ」というテストデータを作るための雛形 |
マイグレーションとは?
Railsでテーブルの作成や修正に使用する機能です。
この機能を利用することでテーブルの保守作業を半自動化することができます。
マイグレーションファイルとは?
マイグレーションを実行するためのファイルで、テーブル作成のSQLを実行するためのファイルです。
2.マイグレーションコマンドを実行してDBにテーブルを作成する。
構文
1 |
rails db:migrate |
実行例
3.DB(SQLite)に接続します。
構文
1 |
rails dbconsole |
実行例
4.テーブルが作成されているか確認
確認コマンド
コマンド | 説明 |
---|---|
.tables | 現在、作成されているテーブルを確認できるコマンド |
.schema テーブル名 | テーブルのカラムを確認できるコマンド |
テストデータを作成する。
1.テストデータの準備
「フィクスチャ」を使用します。
「モデルクラス」を作成した際に、下記の場所にあります。
test/fixtures/users.yml
デフォルトでは、下記のような内容になっています。既に2レコード、サンプルデータが入っています。
1 2 3 4 5 6 7 |
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: name: MyText two: name: MyText |
わかりやすいように、下記のように書き換えます。
1 2 3 4 5 6 7 |
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: name: 太郎 two: name: 花子 |
2.テストデータを取り込む。
構文
1 |
rails db:fixtures:load |
3.取り込まれているか確認する。
1 2 3 4 5 6 7 8 9 |
[root@localhost fixtures]# rails dbconsole SQLite version 3.6.20 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> sqlite> select * from users; 298486374|花子|2018-06-19 11:02:02.567463|2018-06-19 11:02:02.567463 980190962|太郎|2018-06-19 11:02:02.567463|2018-06-19 11:02:02.567463 sqlite> |
上記のように、dbconsoleにてSQLを発行して確認することが出来ます。
テスト:Scaffolding(スキャフォールディング)とは?
Railsのアプリの雛形を作成するための機能です。
専用のコマンドを実行することで、データの参照、登録、更新、削除するための画面がそれぞれ自動生成されます。
コマンド
1 |
rails g scaffold リソース名 カラム名1:データ型1 カラム名2:データ型2 |
「リソース名」は、作成した「テーブル名」を指定します。
まだ、テーブルを作成していない場合は、作成してから行ってください。(なお、Rails6ではモデルクラスの作成まで自動で行ってくれるようなのでいきなりこのコマンドを実行しましょう、逆に作ってしまうとscaffoldコマンドでエラーになります。ただ、その後のマイグレーションファイルによるテーブルの作成は必要です。)
コマンドを実行した例
下記のファイルが自動生成されます。
生成されたファイル | 説明 |
---|---|
app/controllers/users_controller.rb | アプリのリクエストを受け付けるコントローラ |
app/views/users/index.html.erb | 一覧画面 |
app/views/users/edit.html.erb | 編集画面 |
app/views/users/show.html.erb | 表示画面 |
app/views/users/new.html.erb | 登録画面 |
app/views/users/_form.html.erb | 編集、登録共通画面 |
app/assets/stylesheets/scaffolds.scss | Scaffolding用のスタイルシート |
また、ルーティングの設定も自動で修正してくれるので、現状で既にアプリにアクセスできるようになっています。
アプリを起動してみる。
一覧画面
http://192.168.10.5:3000/users(リソース名)
この記事へのコメントはありません。