モデルとデータベース

モデルとは

モデルは、データベースにアクセスするための機能を担当しています。 
app/models以下のモデル名.rbというファイルが対象となります。

 

https://web-camp.online/uploads/contents/131/2.png

 

データベースとモデルの関係性

データベースはデータの入れ物ですが、そこにデータを入れたり取り出したりするためには、SQLと言われる言語でアクセスする必要があります。
モデルはデータベースとのやり取りを簡潔にしてくれるため、このSQLを使うことなくデータを利用することが出来ます。

つまり、SQL文がRubyではいらない

 

モデルの作成

データベースとやり取りをする部分である「モデル」を作成していきます。
「Post」という名前の「モデル」を作成していきます。
実際にモデルを作成する際のコマンドは以下のとおりです。

$ rails g model モデル名

今回は「Post」という名前のモデルを作成します

$ rails g model Post

と入力します。

 

実行すると以下のメッセージが流れます。create ~~と書いてあるのが、このコマンドによって生成されたファイルです。

$ rails g model Post
Running via Spring preloader in process 4271
      invoke  active_record
      create    db/migrate/20180907051856_create_posts.rb
      create    app/models/post.rb
      invoke    test_unit
      create      test/models/post_test.rb
      create      test/fixtures/posts.yml

ここで作成されたファイルのうち、大事なものは

・app/models/post.rb
・db/migrate/(作成した日付時間)_create_posts.rb

この二つです。以下、二つ目のマイグレーションファイルについて解説していきます。

 

マイグレーションファイルとは

マイグレーションファイルは、テーブルの設計図です。
このファイルに記載されている内容でテーブルの列、名前(テーブル名、カラム名)が決まります。

ファイル名を見ると、create_postsと書いてあると思います。postsと書かれている部分はテーブル名になります。コマンド実行時にはPostと単数形でしたが、テーブル名はモデル名の複数形となります。このように、Railsでは命名規則が厳密に決められています。

テーブルとモデルの結びつきは、名前で決定する

情報は、テーブルに保存されます。テーブルに保存された情報を引き出すのは、そのテーブルに対応するモデルとなります。テーブルとモデルの関連付けは名前によって決定します。

 モデルの命名規則

Railsでは、ファイルやテーブルなどの命名を規則に従った形にする必要があります。モデルとテーブルに関する命名規則は以下のようになっており、これに従えばテーブルとモデルが結びつきます。

種類 概要 名前例
モデル名 先頭大文字、単数形 Post
モデルのファイル名 先頭小文字、単数形 post.rb
テーブル名 先頭小文字、複数形 posts

 

マイグレーションファイルの編集

では早速、設計図にテーブルの内容を書いていきましょう。
設計図の書式は以下のとおりです。

create_tableという処理の do ~ end 内に書き込むことによってカラムを定義できます。

  t.データ型名 :カラム名

とします。

 

def change
    create_table :テーブル名 do |t|
        t.データ型 :カラム名
    end
end

 

title(タイトル)
body(本文)
この二つのカラムを定義します。どちらも文字列を保存したいので、カラムのデータ型はstring

class CreatePosts < ActiveRecord::Migration[5.0]
 
    def change        
        create_table :posts do |t|
        # 以下の2行を追加
            t.string :title
            t.string :body            t.timestamps
        end
    end
end

 

マイグレーションを利用して、データベースへ反映

ここまでの記述でテーブルの設計図が完成しました。
設計図は完成しましたが、まだテーブルは作られていません設計図からテーブルを作成しなくてはなりません。
以下のコマンドを実行してください。マイグレーションファイル(設計図)からテーブルを作成するコマンドです

$ rails

データベースに「posts」という名前のテーブルが作成されます。

 

あとは、機能を作っていくだけです

__________

xoxo ( `ー´)ノ