プログラミング勉強日記5(2/8-14)

 プログラミングの勉強をし始めてから5週目になった。

 

【2/8-14】

週勉強時間:11時間12分

月合計勉強時間:22時間8分

合計勉強時間:55時間47分

 

 先週よりは勉強時間を確保することができた。

 もう少しでProgateのRuby on Rails5が終わるので、HTMLやRubyの復習も今後行っていきたい。

 以下は日々の進捗具合や気づきのメモである。

 

2/8

「学習コース Ruby on Rails5 VIII」を進める。

 

2/9

「学習コース Ruby on Rails5 VIII」を引き続き進める。

 スペルの打ち間違いでうまく動かない場合があり、意外に見落としていて作業に時間がかかってしまう要因になる。コードの内容が間違っていないのに動かない際はチェックを忘れないようにしたい。

 また、画像をデータベースに保存する部分で躓いた。メモなどを見ながら進める。

 

以下メモ。

・ユーザー登録時に初期画像を保存する

(例)@user = User.new(image_name:  "default_user.jpg")

 

2/10

「Ruby on Rails5 道場コース III」を進める。途中、クリア扱いになったが適切ではないコードを書いたことに気づく。

f:id:uchi_hiro:20210210204909p:plain

 左が自分の書いたコードで、右が答えだ。

 ログインができなかったときに、メールアドレスとパスワードのフォームに初期値が入るようにコードを書かなければならないのだが、自分のコードではログインできた状態でも初期値が入ってしまう。

 

 以下メモ。

・各投稿に「どのユーザーがその投稿を作成したか」という情報を持たせる

postsテーブルにuser_idというカラムを用意。

 

2/11

 Progeteの「Ruby on Rails5 学習コース IX」を進める。10分ほどしか作業ができなかったが、少しでも手を付けたため精神的ダメージを少しだけ抑えることができた。

 

以下メモ。

・integer(データ型)

整数

・user_idからユーザー情報を取得する

@post.user_idを用いる

 

2/12

「学習コース Ruby on Rails5 X」「学習コース Ruby on Rails5 XI」を進めた。

以下メモ。

・ある条件に合致する複数のデータを取得する

whereメソッドを用いる

(例)posts = Post.where(user_id: 1)

※find_byメソッドは、ある条件に合致する1件だけデータを取得する

 

・どのユーザーがどの投稿をいいねしたかを記録する(準備)

データベースに「user_id」と「post_id」2つのカラムを持つlikesテーブルを用意する。

 

・HTML要素に対してlink_toメソッドを使う

<%= link_to(URL) do %>と<% end %>の間にHTML要素を書く。

※<% end %>を忘れない。 

 

・likesテーブルからデータの件数を取得する

countメソッドを用いる。

 

・記述したバージョンのgemをインストールする

gemfile内に「gem 'gemの名前', 'gemのバージョン'」と記述する。

(例)gem 'rails' '5.0.3'

※バージョンを記載しない場合、最新のバージョンがインストールされる。

 

・bcryptのインストール

「gem 'bcrypt」'を追加する。

その後、ターミナルで「bundle install」というコマンドを実行すると、書かれたgemをインストールすることができる。

※bcrypt:パスワードをハッシュ化する。

 

・has_secure_password

bcryptをインストールすると使用できる。また、passwordが存在するかどうかを自動的にチェックしてくれる。

 

・カラムを削除する

remove_columnを使用する。

 

・authenticateメソッド

渡された引数をハッシュ化し、password_digestの値と一致するかどうかを判定する。

 

2/13

ほとんど時間をとることができなかったが、少し進めることができた。

 

2/14

「Ruby on Rails5 道場コース IV」を進める。Twitterのように投稿一覧を表示させるページがあったが、表示がおかしくなってしまう。

f:id:uchi_hiro:20210214212345p:plain

  divが1つ抜けていたのが原因だった。