TechAcademy Webアプリケーションコース(30日目)

【投稿機能】

〇Model Micropost というモデル名で作成

一対多の関係
User と Micropost は一対多の関係
1人の User は 複数の Micropost をツイート(has_many) すること

テーブル設計
Micropost が持つカラムは、 content と user

・モデルファイルとマイグレーションファイルの作成
$ rails g model Micropost content:string user:references

外部キー制約(データベース側の機能)
保存されるテーブルの整合性を高める
User と Micropost の接続関係を強化・間違ったデータは保存されにくくなる

・マイグレーションの実行
$ rails db:migrate

・Micropost Model
belongs_to :user 
User と Micropost の一対多を表現している

・User Model
has_many :microposts
User から Micropost をみたとき、複数存在する

belongs_to :user の関連付けによって、ユーザの紐付け無しには Micropost を保存できない。

rails console で投稿を作成
投稿の作成は user.microposts.build のように操作する。
build は Micropost.new(user: user) と同じ処理。一対多をよりわかりやすく表現のため build を使用するのが慣習になっている。

〇Router Microposts のルーティングを設定
・config/routes.rb

〇toppages#index 
microposts#index アクションではなく、toppages#index に Micropost の一覧を表示させる。
・ToppagesController

View
・app/views/microposts/_microposts.html.erb(共通の View)
・app/views/toppages/index.html.erb

〇microposts#create
Controller まずはコントローラの作成
$ rails g controller microposts create destroy

create アクションを実装 Micropost を保存
・app/controllers/microposts_controller.rb

〇microposts#destroy 投稿の削除機能を実装
Controller
・app/controllers/microposts_controller.rb

View 削除ボタンを付け足す
・app/views/microposts/_microposts.html.erb

〇users#show
Controller Micropost の数をカウント
・app/controllers/application_controller.rb  

users#show で Microposts も表示する
・app/controllers/users_controller.rb show

View User の show でも Microposts を表示
・app/views/users/show.html.erb

いいなと思ったら応援しよう!