【Ruby】モデル/データベースの役割

アプリケーションにはデータを保管する必要があります。

そこでどういった形でサーバーではデータの保管ややりとりが行われているのでしょうか。

 

まずデータベースに保存をするためには、

種類ごとに保存をするテーブルを用意します。

ここでは表形式でデータが収納されていきます。

種類ごとにというのは、ユーザー情報のテーブル、商品のテーブル、チャットでのやりとりのテーブルなど分けて収納していくということです。

 

ではどのようにテーブルからデータを取得したり保存したりするのか。

その役割を担うのがモデルです。

このモデルを介してコントローラーでデータを取得して画面に表示します。

 

コマンドで

rails g model モデル名(単数形)

を実行することで「モデル名.rb」というファイルができます。

 

またそれと同時に作成されるのが

マイグレーションファイルです。

これは何のためのファイルか。

一言でいえばテーブルの設計書・仕様書です。

このファイルを記述して、テーブルの情報を反映させます。

 

先ほどpostモデルを作成した時に同時にできたので、

このマイグレーションファイルには最初から

 

def change

  create_table :posts do |t|

  end

end

 

と書いてあり、postsテーブルを作成しようという仕様になってます。

ではテーブルにnameカラムとmemoカラムを追加した場合にどう記載するかみてみましょう。

 

def change

  create_table :posts do |t|

     t.string :name

     t.text :memo

  end

end

 

となります。

 

 t.string :name

を解読すると、

t.に続くのが「カラムの型」、その右にシンボルで記載されるのがカラム名

になります。

カラムの型とは何か、ですが

そこにはどんなデータが入るのが指定する必要があり、それが型になります。

stringは短文、textは長文になります。

他にはintegerと指定すれば数値が入れられます。

 

ではテーブルの設計図ができたらそれをデータベースに適用させましょう。

その時に実行するコマンドが

rails db:migrate

です。この動作を「マーグレートする」といいます。

 

またマイグレートが実行済みが確認することができます。

そういった場合は以下のコマンドを実行しましょう。

rails db:migrate:status

この時コマンドでは実行済の場合は up

実行されていない場合はdownで表示されます。

 

また、rails db:rollbackで差し戻すことができ、

この時ステータスはdownになります。

 

この状態で編集が可能なので、

完了したらまたマイグレートを行いましょう。

 

以上が、モデルとデータベースの役割と仕組みでした。

次はこのテーブルにデータを保存させる方法を書きます。