コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

社会のボトムズがRailsに手を出す #2

これまでのあらすじ

アストラギウス銀河を二分するギルガメスとバララントの陣営は互いに軍を形成し、もはや開戦の理由など誰もわからなくなった銀河規模の戦争を100年間継続していた。その“百年戦争”の末期、ギルガメス軍の一兵士だった主人公「キリコ・キュービィー」は、味方の基地を強襲するという不可解な作戦に参加させられる。作戦中、キリコは「素体」と呼ばれるギルガメス軍最高機密を目にしたため軍から追われる身となり、町から町へ、星から星へと幾多の「戦場」を放浪する。その逃走と戦いの中で、陰謀の闇を突きとめ、やがては自身の出生に関わる更なる謎の核心に迫っていく。


はい、ということでRailsチュートリアル第二弾やっていきます。次回も同じあらすじ垂れ流したら怒られそうなので次回からはまじめなあらすじ考えておきます。どうでもいいけどアフィリンクにボトムズ貼りたかったけどあれ滅茶苦茶シリーズ多いんですよね。オススメはシンプルにTV版ですが全52話なんでまあそれ貼っても誰も購入しない未来しか見えない。ま、この記事ボトムズについて熱く語る記事でないので興味をもってしまった皆さんはレンタルするなりBOX買うなりなんなりしてください。


前回記事
inujini.hatenablog.com



Toyアプリつくるよ

えーと、なんの話でしたっけ?そうそうRailsでした。今回からちゃんと中身をいじっていきます。

■ Scaffoldを使おう
Scaffoldってコマンド叩けば「Rails全体を高度なレベルで概観」できるらしいですよ。早速やっていきましょう。

# $ rails generate  scaffold モデル名 カラム名:型
$ rails generate scaffold User name:string email:string
$ rails db:migrate

これだけでTodo系CRUDアプリ完成します。

f:id:andron:20190104092240p:plainf:id:andron:20190104092404p:plain

演習系の話は色々いじってみようとかなんですけど、素のやつはバリデーションされてない感じがする。なに入力してもサクセース!!ってでるでFA。さて、雑に演習の解答したので中身をいじっていきます。その前にEditを押したときの動作を図示しろみたいな問題あったので雑に書いてみる。
f:id:andron:20190104113848p:plain
多分、こう。図に書いてないけどモデルとのやりとりはfindでID拾ってるとかだと思う。



■ Micropostをつくろう

ということで、scaffoldでの大まかな作り方が分かったので似たようなやつをもう一個作ります。

$ rails generate scaffold Micropost content:text user_id:integer
$ rails db:migrate

そんでこれも作っただけだとバリデーションできてないので以下のようにモデルに書き込みを加えて文字数制限とかユーザチェックとかするとのことです。

# app/models/user.rb
class User < ApplicationRecord
    has_many :microposts
end
# app/models/micropost.rb
class Micropost < ApplicationRecord
    belongs_to :user
    validates :content, length: { maximum: 20 }
end

これで「Content is too long (maximum is 20 characters)(コンテンツの中身が20文字以上だからダメ)」とか「User must exist(ユーザを設定しろ)」とかそんな感じで登録しようとすると怒られるようになります。ここまでRubyいじってない……。まあ、そういう感じの機能がさっくり作れるとのことです。よしとしましょう。


第二章の感想

今回はチュートリアル通りにやるように頑張った。まあ、それやったから何って感じなんですけどね……。今のところなんか学びがあると思えない。一応、今回の学びとしてはrails5からマイグレーションrakeからrails db:migrateとかになったのを知ったことぐらい。次章から本格的な内容になるらしいので次章に期待したい。