プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】の「O/Rマッパー」である「ActiveRecord(アクテ…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】の「O/Rマッパー」である「ActiveRecord(アクティブレコード)」、Scaffoldingで雛形アプリ作成まで

06.19

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

「ActiveRecord(アクティブレコード)」は、「Ruby on Rails」が正式に採用しているO/Rマッパーライブラリになります。

「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(リソース名)

登録画面

編集画面

表示画面

スポンサーリンク
  • 2018 06.19
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 11.22

    【Ruby on Rails】「画面パラメータの渡し方」の種類

  2. 2019 12.01

    【Rspec】基本的な書き方、タグなど

  3. 2019 12.07

    【Ruby on Rails】「Active Storage」の基本

  4. 2019 11.17

    【Ruby】日付や時刻を扱うクラス

  5. 2019 12.01

    【Ruby on Rails】URLの指定方法について(URLヘルパーメソッド等)

  6. 2019 11.30

    【Ruby on Rails】マイグレーション、マイグレーションファイルの書き方

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby on Rails】YAMLの基本と、データ…

【Java】例外処理の基本と、「独自例外」を作成するか…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー