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すれば大丈夫みたい。
心配なので実行するときはもう一度聞くけど。
本当に、「これでいいんか?」⇨「なるほどなぁ。」の繰り返しですね!
コメント