【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になります。
この状態で編集が可能なので、
完了したらまたマイグレートを行いましょう。
以上が、モデルとデータベースの役割と仕組みでした。
次はこのテーブルにデータを保存させる方法を書きます。