Ruby on Rails チュートリアル 「第11章 ユーザのマイクロポスト」をやってみた

Ruby on Rails チュートリアル 「第11章 ユーザのマイクロポスト」をやってみた

Ruby on Rails チュートリアルの第11章のメモです。第11章では、チュートリアルで作成するサンプルアプリのメイン機能であるTwitterの投稿機能のようなものを作成します!モデルとモデルの関連付けを行うメソッドhas_manybelongs_toを学ぶことができます!

第11章ユーザーのマイクロポスト | Rails チュートリアル

Railsチュートリアル第11章をやってみた

マイグレーション生成の際、関連付けを定義するためにはreferences型を使用する

こうすることで、自動的にインデックスと外部参照キー付きのuser_idカラムが追加される

関連付けされたモデルのレコード生成方法

関連付けされたモデルのレコードを作成するときは、紐付いているモデルを経由して生成することで外部キーが自動的に正しい値に設定される

newメソッドと同様、buildメソッドはオブジェクトを返すがデータベースには反映されない

user/micropost関連メソッドのまとめ

メソッド用途
micorpost.userMicropostに紐付いたUserオブジェクトを返す(belongsTo)
user.micropostsUserのMicropost集合を返す(hasMany)
user.microposts.create(arg)userに紐付いたMicropostを生成する
user.miciroposts.create!(arg)userに紐付いたMicropostを生成する(失敗時に例外発生)
user.microposts.build(arg)userに紐付いた新しいMicripostオブジェクトを返す
user.microposts.find_by(id: 1)userに紐付いていて、idが1であるMicropostを返す

レコードを逆順で取得する

Railsのdefault scopeメソッドを使用する
このメソッドは、データベースから要素を取得した時のデフォルトの順序を指定する
特定の順序にしたい場合は、default_scopeの引数にorderを与える
例えば、created_atの降順にしたい場合は次のようにかく

Rubyの4.0からは

と書くことができる

ユーザが破棄された時、同時に投稿も消す設定

Railsはクラス名でパーシャルを自動探索してくれる

@feed_itemsの各要素がMicropostクラスを持っていると、
Railsは対応する名前のパーシャルを、与えられたリソースのディレクトリ内から探してくれる
したがって、
app/views/micorposts/_micorpost.html.erbからパーシャルを呼び出してくれる

Railsチュートリアルでの画像アップロード

RailsチュートリアルではCarrierWaveという画像アップローダーを使う
GemfileにCarrierWaveに追加すると、Railsのジェネレーターで画像アップローダーを生成できるようになる

CarrierWaveでアップロードされた画像は、ActiveRecordモデルの属性と関連付けにするべき

関連付けするモデルにアップローダーを追加するには、
mount_uploaderというメソッドを関連付けするモデルに追加する

Ruby on Rails チュートリアル 「第11章 ユーザのマイクロポスト」のまとめ

  • Railsは複数のキーインデックスをサポート
  • has_manybelongs_toを使うことでモデル同士の関連付けを行うことができる
  • deafault_scopeを使うとレコードの順序を変更できる
  • dependent: :destroyを使うと、関連付けされたオブジェクトが削除されると同時に自分自身も削除する

関連付け等は、CakePHPとほぼほぼ同じ
かかった時間は3時間ほど
Ruby on Rails チュートリアル 第10章までかかった合計時間は22時間
次回、遂に最後の章!
Ruby on Rails チュートリアル 「第12章 ユーザをフォローする」をやってみた

Ruby on Railsのおすすめ書籍はこちら!


もしよければ応援クリックお願いします
↓↓↓↓↓
にほんブログ村 IT技術ブログ IT技術メモへ