概要
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
一旦マイグレーションファイルを覗く
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を覗く。
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の方が便利らしいのでインストールしとく。
group :development, :test do
#(中略)
gem 'pry-rails'
gem 'pry-doc'
gem 'pry-stack_explorer'
gem 'pry-byebug'
end