【Railsチュートリアル】第2章のまとめ


はじめに

この記事ではRails チュートリアルの第2章
についてまとめた記事です。
ベストプラクティスや間違いがあれば
チュートリアルをやりながら書き直していく予定です。


今回知ったこと

・データモデルを作成できる。
・データモデルを作成するときはscaffoldジェネレータを使う。
・データモデルを作成したらマイグレーションを必ず行う。
・データモデルはModelsにhas_manyとbelongs_toを使うことで関連付けできる。

・Railsにはルーティングという仕組みがある。
・ルートURLにアクションを指定すると表示するページを操作できる。
・modelsを編集することで簡単な入力のサニタイズが可能


データモデルを作成

データモデルを作成するときはscaffoldジェネレータを使う。

nameカラム,emailカラムをもったUserというデータモデルを作成する。
rails generate scaffold User name:string email:string

データモデルを作成したらマイグレーションを行う。
rails db:migrate

ルーティングという仕組み

インフラ屋でIPアドレスのルーティングを書いたことがある人は
ちょっとだけ親しみのある言葉かと思う。

リクエスト文字列に応じて
表示するページや動作を変更できる。

チュートリアルでは動作のことをアクションと表記している。

URL/show 表示
URL/new 新規作成
URL/edit 編集


入力のチェック・無害化

入力のサニタイズはmodelsを編集することで可能

チュートリアルではmicropostのデータモデルを編集した。

class Micropost < ApplicationRecord
  belongs_to :user
  validates :content, length:{maximum:140},
                      presence: true
end

Rubyとオブジェクト指向(OOP)

今回作成したデータモデルmicropostを操作するMicropostは
ApplicationRecord クラスを継承したクラス

まぁ、わからない人は2代目 ApplicationRecord という
認識でだいたい問題ないです。

ApplicationRecordというのがスーパークラス(ベースクラスともいう)

親:ApplicationRecord
子:Micropost

という感じ


エラー対応

gitでリモートリポジトリにpushしてたら
いろいろ行き詰ったのでメモ

SSH RSAキーを登録していないパティーン

アクセス拒否(publickey)
リモートリポジトリが読み込めませんでした。
Permission denied (publickey).
fatal: Could not read from remote repository.

対処方法

1:鍵を作成する。
2:作成した鍵をコピーする。
3:gitghubに公開鍵を登録する。
4:configファイルを作成し直す。(接続確認)
鍵がすでにあれば cat コマンドで表示する。
鍵があるリポジトリ内で以下のコマンドを叩き
GitHubに登録
cat ~/id_rsa.pub

リモートリポジトリにリポジトリがあるパティーン

リモートリポジトリにすでにoriginが存在しています。
fatal: remote origin already exists.

解決策
git remote rm origin originの削除
git remote add origin [email protected]:ユーザー名/アプリ名.git
git push -u origin master

削除しちゃって問題ないのかって?
今、自分の手元にあるリポジトリが最新であれば問題ないかと思う。
そもそも、リモートのほうが新しい状態って結構異常かと思う。


今回忘れてたこと・コマンド

git remote add origin リポジトリ
git push -u origin master

出力メッセージの日本語翻訳(まとめ)

チュートリアルの最中に気になった文言

単語 日本語
On branch master マスターブランチを参照しています
No commits yet まだコミットされていません
Changes to be committed コミットされる変更
Changes not staged for commit 変更がステージングされていません
nothing to commit, working tree clean 作業ツリーにコミットするものは何もありません
discard changes in working directory 作業ディレクトリの変更を無視する
fatal: remote origin already exists. リモートリポジトリにすでにoriginが存在しています。
Permission denied (publickey). アクセス拒否
fatal: Could not read from remote repository. リモートリポジトリを読み込めませんでした。
GitHub found 6 vulnerabilities GitHubが6個の脆弱性をみつけたよ

herokuのインストール方法
source <(curl -sL https://cdn.learnenough.com/heroku_install)

スペルミスで発生したエラー文
Range unspecified. Specify the :in, :within, :maximum, :minimum, or :is option.


おわり