Rails Tutorial、始めました【2章】
Rails Tutorial 2章に突入!
1章の記事はこちら↓
Rails Tutorial、始めました【1章】
第2章 Toy アプリケーション
2章ではToyアプリケーションなるものを作っていきます。
超超超、Twitterの簡易版みたいなものですね。
アプリケーションの計画
Twitterにはユーザーと投稿内容が必要です。ここではモデル設計を考えます。
とはいえチュートリアルに答えが書いてあるんで、それを貼ります。
users
id | integer |
---|---|
name | string |
string |
microposts
id | integer |
---|---|
content | text |
user_id | integer |
Usersリソース
どうやらrailsには、モデルに関連するControllerとViewを一括で作成する最強コマンドがあるみたいです。
その名もscaffold!一体何が起きるのか、早速使ってみましょう。
1 2 |
$ rails generate scaffold User name:string email:string $ rails db:migrate |
migrateまで終えたらローカルサーバーを起動します。
おお
おおお!
おおおおお!すげー!よくわからんけどすげー!webアプリが作れちゃったよママー!
Usersリソースの欠点
これで簡単にwebアプリケーションが完成したわけですけども、もちろん欠点が多いです。
- データの検証が行われていない
- ユーザー認証が行われていない
- テストが書かれていない
- レイアウトやスタイルがっ整っていない
- 理解が困難
確かに画面はめっちゃ簡素だし、名前とかメアドは空でも通っちゃいますからね。これでは使い物になりません。
Micropostsリソース
さて、Usersリソースは一旦置いといて、Micropostsリソース(投稿内容)を作っていきましょう。
こちらもscaffoldで同様にできました。
1 2 |
$ rails generate scaffold Micropost content:text user_id:integer $ rails db:migrate |
micropostの設定
micropostもできましたが、こちらも色々と問題を抱えています。チュートリアルでは下記2つの解決法を学びました。
- 最大文字数が設定されていない
- userと紐づいていない
まず最大文字数の設定ですが、Micropostモデルにバリデーションを追加するだけで簡単に設定できました。
1 2 3 |
class Micropost < ApplicationRecord validates :content, length: { maximum: 140 } #これ end |
続いて、Userとの紐づけですが、これも超簡単でした。Micropostモデルにコードを1行追加するだけです。
1 2 3 4 |
class Micropost < ApplicationRecord belongs_to :user #micropostにユーザーを紐づけ validates :content, length: { maximum: 140 } end |
以上で完了ですが、これだと1ユーザー1ツイートしかできないんですよね。何だその縛りプレイは。
というわけで解消しましょう。
1 2 3 |
class User < ApplicationRecord has_many :microposts #一人のUserがたくさんmicropostを持てるようにする。 end |
これだけ!?と思いましたが、これだけみたいです。いや〜、面白いですね。こりゃあフレームワークの中身まで知っとかないと、後々大問題になりそうな予感がしますね。
感想
以上、Rails Tutorial 2章でした!
今回はRailsの魔法を教わった感じですね。チュートリアル通りにコマンドを打てばいいだけだったので、特につまづくところはありませんでした。所要時間は30分くらいです。
内容自体はめっちゃ面白かったし、Railsへの興味がより一層増しました。さすがにここまで有名になるWAFは違いますね!
1章とは打って変わって、早く3章へ進みたい!そんな気分になれる章でした。
次回、3章へ続く!