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