テックキャンプ87日目〜商品出品機能③・商品一覧機能

kobasaです(´ω`*)風がクッソ強いんですけど。
台風はだいぶ離れてるはずなんですけどね?部屋が揺れて困る。

昨日レビュー依頼を出した「商品出品機能」の修正が少なかったので、今日は

  • 商品出品機能
  • Basic認証
  • 商品一覧機能

を完了できました!ちょっと安心できるかな?先週はなんか焦ってたんですよね。

87日目のまとめ

テーブルのカラム名について

カラム名を複数形にしない。何か意図があると思われてしまう。
「発送までの日数」という項目があって、選択項目が「1〜2日で発送」と複数日の指定でも、
「delivery_days」のように複数形にするのはやめておいた方がよい。
※どうしてもそのようなカラム名になるものは除く。

あと何処かの記事で変数名などは形容詞+名詞で定義メソッド名は動詞+名詞で定義すること、とありました。(名詞はなくてもよい)
処理を実行する(メソッド)⇨動詞が含まれる。というように一目でわかりやすくするためみたいです。確かにわかりやすそうだ。

ActiveHashの項目名の情報を取得

<% @items.each do |item| %>
  item.delivery_fee.delivery_fee
<% end %>

itemモデルに紐づくActiveHashを用いたdelivery_feeモデル内のdelivery_feeという項目名の値を取得するという意味。
「クラス名と項目名が同じ方がわかりやすいやろ」と思って項目名をつけたらややこしくなった…feeだけでよかったか。

データベースにデータがないときという条件指定

<% unless @items.present? %>
  〜処理内容〜
<% end %>

インスタンス変数@itemsにはitemsテーブルの全データを格納している。
unlessは真偽判定がfalseのときに処理を実行する。
present?メソッドはnil,””,” “(半角スペース)のみ,空の配列,空のハッシュの時にfalseを返す。rubyのみでは使えず、Railsで使用できる。

とりあえず希望通りの動きはできた。レビューでも何も言われなかったけど、カリキュラムにこんな処理あったかな?もっといい感じの記述方法があるかも。

他にも真偽判定するメソッドはいくつかある。
nil?メソッド:nilの場合のみtrueを返しそれ以外はfalse。
empty?メソッド:空の文字列や空の配列にtrueを返す。nilに対して使用するとエラーになる。
blank?メソッド:present?メソッドの逆でnilや空でtrueを返す。nil?+empty?のようなメソッド。rubyのみでは使えず。
ドキュメントには「falseを返す」と書いてあるけど多分「trueを返す」だと思う。

N+1問題を考えなくてもよい場合

テーブル内の全てのデータを取得するが、ビューの表示内容に他のテーブルから情報を取ってこなくてよい場合は、
N+1問題が起こらないのでincludesメソッドは不要。
一覧表示の商品内容に出品者の表示が不要なときなど。

git push heroku masterコマンドについて

ローカルリポジトリのmasterブランチの内容をherokuに反映させるコマンド。
herokuだけでなくリモートリポジトリへのpushを忘れないように。

Basic認証の実装中、masterブランチで作業してカリキュラムに沿ってherokuへpushしたらgitに未プッシュのコミットが残っていて焦った。
ついでにherokuへはリモートリポジトリの内容が反映されるのかと思ってましたw

本番環境でマイグレーションファイルを反映し直す

「商品のデータがないときの処理」を動画にしないといけない🤔
rails db:rollbackでデータ消すか😆
マイグレーションファイル差し戻したけどそのままherokuにpushしてええんか😨

マイグレーションファイルを修正したわけではないので問題なし(´ω`*)

もしカラム名などを修正した場合は一旦herokuへpushして
(マイグレーションファイルが一致しないというエラーメッセージが出る?)
heroku run db:rollbackしてheroku run db:migrateすれば大丈夫みたい。
心配なので実行するときはもう一度聞くけど。

本当に、「これでいいんか?」⇨「なるほどなぁ。」の繰り返しですね!

コメント

タイトルとURLをコピーしました