No_ideaのわからん日和

✏️...プログラミングが全然出来ない奴がわからんわからん言いながら様々な構文(記述方法やエラー構文など)と奮闘しながら成長していく成長記録です🐢

Ruby on Rails: DBにテーブルを作る〜テーブルにカラムを作成する...chapter2

DB設計は終わりました。

今回やりたいこと

§ DBにUsersテーブルとTweetsテーブルの作成

§ 作ったテーブルに各カラムを作成

 

①ModelにUserモデルとTweetモデルを作成

モデルはDBに値をとりに行ったり入れたりするために必要なもの。

$ rails g model User

すると、

     invoke  active_record

      create    db/migrate/20200526224538_create_users.rb

      create    app/models/user.rb

      invoke    test_unit

      create      test/models/user_test.rb

      create      test/fixtures/users.yml

となる。

後で、db/migrate/20200526224538_create_users.rbにカラムや必要情報を追加していきます。

同様にTweetもモデルを作成します。

$ rails g model Tweet

結果:

      invoke  active_record

      create    db/migrate/20200526225124_create_tweets.rb

      create    app/models/tweet.rb

      invoke    test_unit

      create      test/models/tweet_test.rb

      create      test/fixtures/tweets.yml

上同様、db/migrate/20200526225124_create_tweets.rbにカラム、必要情報を追加します。

 

②migrateフォルダ内に作成されたファイルの変更

db/migrate/20200526224538_create_users.rb

class CreateUsers < ActiveRecord::Migration[6.0]
 def change
  create_table :users do |t|
   t.string :nickname, null: false
   t.timestamps
  end
 end
end

 

db/migrate/20200526225124_create_tweets.rb

class CreateTweets < ActiveRecord::Migration[6.0]
 def change
  create_table :tweets do |t|
   t.integer :user_id, foreign_key: true
   t.string :title, null: false
   t.text :main, null: false
   t.timestamps
  end
 end
end

と変更した。

 

③$ rails g db:migrate △

調べました。

なぜなら、うろ覚えの私は$rails g ~~migrationってコマンドも覚えていたからです(~~は何か書いてあった気がする....(うろ覚え))。

 

1.$rails g migration create_△△

これで先ほど作ったdb/migrate/○○_create_△△.rbが作られる(○○は数字が入る)。

つまりこれがマイグレーションファイルっていうものだったんですね。

でも、マイグレーションファイルって結局なんだろってなりました。

DBにカラムを作るものって認識でした。

 

🔍調べた結果:

マイグレーションファイルとは、Rubyで書かれた テーブルの設計図 のことです。 テーブルの設計図とは カラム や データ型 の定義が書かれた状態のことを指します。

参照:https://diveintocode.jp/blogs/Technology/migration

確かに書いてる。

 

2.$rails db:migrate

1.は何してるか分かった。

じゃあ、2.って何をしてるの?どんな指令を出してるの???

🔍調べた結果:

マイグレーションファイルを実行し、データベースに反映させるためのコマンドです。

参照:https://pikawaka.com/rails/migration

知らなかった。

これをしないとDBにカラムが追加されない。その前にテーブルもない状態。

 

 

というわけで、マイグレーションファイルは変更したので$rails db:migrateをします。

==20200526224538 CreateUsers: migrating ======================================

-- create_table(:users)

   -> 0.0395s

==20200526224538 CreateUsers: migrated (0.0396s) =============================

 

==20200526225124 CreateTweets: migrating =====================================

-- create_table(:tweets)

   -> 0.0553s

==20200526225124 CreateTweets: migrated (0.0554s) ============================

 

これでSequel Proを見にいくと出来てるぞ!

 

ちなみにコマンドでマイグレーションファイルがschema_migrationsテーブルに保存できているかを確認する方法。

$rails db:migrate:status

実行結果:

と、upになっていれば保存できてます。

downとなっている場合は保存できてません。

 

 

 

 

 

 

 

 

 

以上です。