学習メモ

Ruby on Railsを中心にプログラミングやWEB技術を勉強しています。

【Rails】データベースの使用

データを永続化するためにデータベースを使用するので、基本部分のまとめ。
 
データベースとやりとりをするライブラリはActiveRecordで、データオブジェクトの作成、保存、検索のためのメソッドを持っている。
Railsにはマイグレーションという機能があり、データ定義をrubyで記述するのでSQLの文法を書かなくてもデータベースが使える。
 
 

モデルの作成

railsではデータモデルとして扱うデフォルトのデータ構造のことをモデル呼ぶ。モデルとデータベースのテーブルが対応していて、モデルを通じてデータベースを使用できる。
 
$ rails generate model User name:string email:string
 
コントローラ名には複数形が使われたが、モデル名には単数系を用いるのが慣習となっている。
属性と型情報を記載して実行すると対応するカラムをつくることができる。
ActiveRecordを継承したUserモデルが作成されて、このモデルを使用することでデータベースに関するメソッドが使えるようになる。
同時にマイグレーションファイルが生成されテーブル作成のためのchangeメソッドがある。
テーブル名は情報の集まりなので複数形(この場合users)となる。
 

マイグレーションファイルの作成

$ rails generate migration ファイル名

すでにあるテーブルを変更するためのマイグレーションファイルを作成する。
ファイル名はデータベースに加える変更を表すようにしておくと何のためのファイルかわかりやすい。
マイグレーションファイルのchangeメソッドに変更内容を記入する。
以下は変更の例
add_index テーブル名, カラム名, オプション
add_column テーブル名, カラム名, オプション
 

変更内容の反映

$ rails db:migrate
/db/shema.rbがデータベースの構造を追跡するために使われていて、コマンド実行のたびに更新されていく。
マイグレーションファイルを作成、更新した時はこのコマンドにより変更内容を反映する必要がある。
 

ロールバック

$ rails db:rollback
直前に行ったマイグレーションロールバックできる。
STEP=3のようにパラメータをすると最後に行った3つのマイグレーションロールバックされる。
 

seed機能

データベース作成後に初期データを素早く簡単に追加するための機能。
db/seeds.rbにコードを記述して下記を実行する。
$ rails db:migrate:reset
$ rails db:seed
Railsサーバーが起動中だとうまく動かないときがあるので止めてから実行する方が良い。