Railsチュートリアルを最後まで。第2章 scaffoldでtoyアプリ

こんにちは、のまち(@bokunomad)です。

Railsチュートリアルの第2章です。自動生成ができる「scaffold」を使って簡単なアプリを作っていきます。

とは言ってもユーザー登録アプリをガッツリ作るというわけではなく、あくまでUserモデルとMicropostモデルの関連付けについて触りをなぞるぐらいです。

ただあとに繋がっていく重要なポイントでもあるので意味を理解して進める必要があります。

スポンサーリンク

2.1 アプリケーションの計画

まずは新規で「toy_app」を作成して、cdで移動します。ちなみに私はenvironment下に_rails_tutorialフォルダを作ってその下にtoy_appを作成しました。

Toy_appのgemfileを編集してからbundle installします。

ここで一旦コミットしてプッシュしておきます。

続いて1章のときと同じようにhelloアクションをApplicationコントローラーに追加します。さらにルートルーティングも設定します。

コミットしてHerokuにプッシュします。

2.2 Usersリソース

scaffoldコマンドでUserモデルを作成。さらにマイグレートも行います。

2.2.1 ユーザーページを探検する

index, show, new, editアクションがscaffoldによって作成されました。これによりURLに/usersや/users/1などを入れると、それぞれのURLに合うアクションが実行されるようになりました。

2.2.2 MVCの挙動

ルートをapplication#helloからusers#indexに変更。またUsersリソース用にアクション割り当てを行います。

resources :リソース名

上記のように記述することでリソース名に対してRESTfulなリソース定義を行ってくれます。つまり「index, create, new ,edit ,show ,update ,destroy」を1つ1つ定義しなくてresourcesで一気に指定することができるというわけです。

2.3 Micropostsリソース

2.3.1 マイクロポストを探検する

Usersリソースと同じようにscaffoldを使ってmicropostモデルを作成。そしてマイグレートする。

resourcesにmicropostsを定義する。

2.3.2 マイクロポストをマイクロにする

validationを使って文字数制限を140字にする。

2.3.3 ユーザーはたくさんマイクロポストを持っている

ここが今回のキモになるポイントです。操作自体は簡単ですがあとにつながる重要なポイントです。

上記2箇所を記述することでUserとMicropostに関連付けされました。

Userには複数のmicropostを属することになるので複数形となります。また1つ1つのMicropostには1人のUserしか属することがないためbelongs_toのUserは単数形で記述します。

これによりMicropostテーブルに含まれているuser_idカラムから、どのUserが作成したmicropostなのかを判別できるようになります。その逆もしかりで、Usersテーブルのidカラムに関連付けられたmicropostを特定することが可能になります。

詳しいことはまた先にやるため今は「関連付けられているんだ」ということだけ認識していれば十分です。

続いてMicropostを作成する際にデータが空白だと投稿できないようにvalidateのpresence :trueを設定します。

2.3.5 アプリケーションをデプロイする

コミットしてプッシュします。なるべくこまめに行うようにします。

さらにHerokuにプッシュします。その後Heroku上のDBを更新するためにマイグレーションを行います。

最後にもう一度Heroku上のアプリを確認して終了です。

まとめ

scaffoldを使うことで手っ取り早くアプリを作ることができました。ただしほんとに雛形レベルなため中身はほぼありません。ここからしっかり機能を実装していく必要があります。

それでは、Railsチュートリアルを最後まで。第2章 scaffoldでtoyアプリの記事でした。

この記事が気に入ったら
いいね ! しよう

@bokunomadを