はじめに
この記事では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 git@bitbucket.org:ユーザー名/アプリ名.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.
#おわり