Help us understand the problem. What is going on with this article?

【初心者用】Active Recordを使ったデータベース(テーブル)の作成手順

More than 3 years have passed since last update.

 ActiveRecordは元々Rails用に作られたものだから当然といえば当然なのだけれど、Rails以外の環境でActiveRecordを使ってテーブルを作成する流れをざっと見やすくわかりやすくまとめた情報は少ないので、SinatraとSQLite3を使った作成手順を個人的Tips付きで復習用にまとめてみる。

実行環境

  • Ruby (2.1.3)
  • Sinatra (1.2.0)
  • ActiveRecord
  • SQLite3

ActiveRecordとは

 PHPやSQLの知識がなくてもRuby+αの知識でデータベースを構築できる便利なツール(超訳)

作成手順

コードを書く前に

0. 必要な情報を整理する

 そのデータベースやテーブルにはどんなデータが必要で、そのデータは文字列.stringなのか、真偽値.booleanなのか、はたまた日時.datetimeなのかなど、どんな形のデータにあたるのかをまとめて、データベース全体や各テーブルについて設計する。

ActiveRecordを使う準備をする

1. Gemfileに必要なことを書き加えてgemを追加

souce "https://rubygems.org"
gem 'sinatra'
gem 'sinatra-contrib'
gem 'sinatra-activerecord'
gem 'sqlite3'
gem 'rake'

 Gemfileにこれらを書き加えて、bundle。ターミナルで操作する前に絶対に保存するいつまで経ってもbundleのタイプミスしがち。

2. Rakefileを作成し、Rakefikeに必要なことを書く、保存

実際に作っていく

3. models.rbを作成、書く、保存

 models.rbはSQLiteと接続して、データベース全体の設計をするところ。

4. rake db:create_migration NAME=テーブル名(複数形)

5. migrationファイルを書く

 個々のテーブルの設計を落とし込んでいく。

6. rake db:migrate

 実際にデータベースを構築するSQLiteへ変更を送信(超訳)。

作成したテーブルを確かめる

7. schema.rbで確認

 データベースの最新状況がここにまとめて表示される。自動生成されるこのファイルは閲覧専用につき注意。

8. 修正したいとき

1. 新規migration fileでremove_colmnadd_colmnをする

 そのままdef changeのときとdef up/ def downを使うときがあるぞ!

2. rake db:rollback STEP=n

 SQLiteのデータベースへmigration fileを追加する前の状態へ時間を巻き戻せる呪文。rollbackするときは、rollback前に該当ファイルをいじってはいけない。

まとめ

  • 慣れたらそんなに難しくない。はず。
  • Gitの更新みたいにちゃんと手順を踏んで作っていく。
  • 事前にちゃんと情報を整理して、設計しておくのと、実行前に見直しをしっかりする!

いくらお手軽データベース作成ツールとはいえ通常のコードの修正と比べると修正するのに手間がかかって面倒だから、はじめのうちは慎重につくるように心掛けたほうがいい気がする。

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした