LoginSignup
0
0

More than 3 years have passed since last update.

【Rails】マイグレーションファイルの生成、その内容

Posted at

概要

Railsは高速でアプリケーションを作れるので、教材などのコードをコピペしとけば「なんかできちゃったお」ってなることが多い。
大学1年の頃はコレが原因で挫折したので、今回は簡単なアプリケーションを作りながら丁寧に理解していきたい。
幸い学生で、コロナの影響で時間もたっぷりあるので、今しかできないことをやる。
アプリケーションを作る上で必要なコマンドをまとめるというよりは、「このメソッドはなんのメソッドで、何をしているのか」という点に着目する。
とにかく自分の「なんか動いた。。」を徹底的に回避するための備忘録。

「お前、ちょっとやりすぎだぞ。初心者ならもっと効率上げろ。」
だったり、
「お前、ここの理解浅い。出直してこい。」
などあれば、コメントいただけると幸いです!!

https://diveintocode.jp/blogs/Technology/migration
この記事にとても助けられた。。。

scaffoldでcontrollerとmodelを生成。migration fileを覗く


アプリケーション、コントローラ、モデルの作成
$ rails new Myblog # DBやrailsのバージョンもここで指定可能
$ rails g scaffold Message title:string message:string 

一旦マイグレーションファイルを覗く

db/migrate/20200418172927_create_messages.rb
class CreateMessages < ActiveRecord::Migration[5.2]
  def change
    create_table :messages do |t| # ここテーブル名
      # こいつらカラム名↓
      t.string :title
      t.string :message

      t.timestamps
    end
  end
end

このブロック処理でデータベースのテーブルを作成するもの。
例えば、このマイグレーションファイルは以下のようなDBを作る。
SQL叩かなくてもRubyでこんなことできる。ActiveRecordはすごい。

ID title message created_at updated_at
0 あ、こんちは サイゼのイタリアンプリン 生成日時 更新日時
1 スマブラ ウルフの空後は着地空きほぼ無いのでそのまま空N打てばごまかせる 生成日時 更新日時

DBの変更を行うたびにマイグレーションファイルは蓄積していく。(おもしろ!!!!)
正直「ここでのカラム名がハッシュで定義されているのはなんで?」
「create_table :messagesのブロック処理がどんなロジックで行われている??」
とはなっているが、マイグレーションファイルがなんのためにあるのか。
さらに、マイグレーションファイルは色んなモジュールを使用でき、例えばcrename_columnでDB周りの変更もできる。その場合、modelは必要ない。
など自分に現状必要なものは理解できた。
やりすぎと丁寧さは紙一重だな~。

DBの生成

とりあえずDB作成。
shell
rails db:migrate

schema.rbを覗く。

db/scema.rb
ActiveRecord::Schema.define(version: 2020_04_18_172927) do

  create_table "messages", force: :cascade do |t|
    t.string "title"
    t.string "message"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

end

おー、できた。
ちなみにコレは見る専門で、マイグレーションファイルのどこまでが更新されたかを、上のversionで確認できる。
チーム開発の時に便利。

コンソールについて


コンソール見る時pryの方が便利らしいのでインストールしとく。
Gemfile
group :development, :test do
  #(中略)
  gem 'pry-rails'
  gem 'pry-doc'
  gem 'pry-stack_explorer'
  gem 'pry-byebug'
end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0