勉強履歴(と雑記)

プログラミング初心者のメモ書きです

Railsチュートリアル 第13章 メモ書き

○マイクロポストの実装

 

・Micropostモデルは内容を保存するcontent属性(text型)と、特定のユーザーとマイクロポストを関連付けするuser_id属性(integer)の2つから成る

 

・$ rails generate model Micropost content:text user:references

→AplicationRecordを継承したモデルが生成

 +user:referencesでbelongs_toも追加

 

マイグレーションファイルも同時に生成

Userモデルとの違いは以下2つのコードが追加されている点

t.references :user, foreign_key: true

add_index :microposts[:user_id, :created_at]

 

・バリデーション:

存在性と長さの2つ

validates :user_id, presence: true

validates :content, presence: true, length: { maximum: 140 }

 

・関連付け:

それぞれのマイクロポストは一人のユーザーに関連付けられる

+それぞれのユーザーは複数のマイクロポストと関連付けられる

→belongs_to/has_manyによる関連付け

 

user.microposts.create

user.microposts.create!

user.microposts.build

上3つに代表されるメソッドが使用可能に

 

・Micropostの投稿を降順にする場合:

default_scope ->  { order(created_at: :desc) }

※->(ラムダ式):ブロックを引数に取り、callメソッドが呼ばれた時、

 ブロック内の処理を評価する

 

・has_many :microposts,dependent: :destroy

→マイクロポストがその所有者と一緒に破棄されることを保証する

 

・id="micropost-<%= micropost.id %>:

将来的にJavaScript でマイクロポストを操作する場合に有効

 

・マイクロポスト作成・削除にはログインが必要→ logged_in_userメソッドをApplication コントローラに

 

・Micropost.where("user_id = ?", id)

→?でSQLクエリに代入される前にidがエスケープで、SQLインジェクションというセキュリティホールを避ける

 

・マイクロポストの削除は投稿ユーザーと管理者のみに限定

 

・request.referrer:一つ前のURLを返す

 

Railsでファイルをアップロードする場合はActiveStorageを使う。

rails active_storage:install

※但し、フォーマット機能やバリデーション機能は実装されていないため、gem :'active_storage_validations'をインストールする

 

・has_one_attached1つのマイクロポストに一つの画像(has_many_attachedで複数の画像)