アラフォーがお金持ちになるためエンジニアになったブログ

お金も根性も学歴もないアラフォーまきのがエンジニアになってお金持ち目指すよ!

侍エンジニア塾 24回目の授業

どうも、アラフォーまきのです。



もうあと3回で侍塾終わりだよーーー!
ヒー!



早い!そして終わらない(笑)



今日までにやっていたこと

削除の実装を頑張ってました。




ただ、user.モデルはdeviseをいれていて、これとの絡みがうまく解決できず。





deviseはユーザーを物理削除してしまう。





でも、私が今書いてるやつは6つのモデルがいろんな方向に紐付けされているから、ここは一旦論理削除で統一しようという方向にしているのですよ。





「削除」という1つの処理なのに、とあるモデルについては物理削除を、とあるモデルには論理削除を…としてしまうと、やはり制御上あまりよろしく無い。





ダメでは無いけれど、どちらかに揃えてある方がよりよいわけだ。




そのためには、まずdeviseのユーザー削除のリンクを切って、新たに自前の削除を設定する。



その削除をクリックしたら…


1:退会したというフラグを立てる。
2:ログアウトさせる。
3:ログインできなくする。
4:user = User.find(where)などでの検索時に、deleted: falseの条件をつけて、退会ユーザーの情報を拾わないようにする。


という作業が必要。




フラグ立ては簡単。
ただこの後、自前のコードでこのuserをログアウトさせなければならない。




application.html.erbで

<span id="linkToLogout"><%= link_to("Log Out", destroy_user_session_path, method: :delete) %></span>


っていうのがあるので、これを使えば…?と思ったけれど、うまくいかなかった。




調べるだけで2−3日使っちゃったので諦めることに。





メンターさんへ相談しても良かったんだけど、多分ややこしいから授業の時にお話しながらの方がいいと判断したので、授業まで待つことにした。





代わりに、各モデルの単独の削除機能を書いてみることに。





これも、最初はややこしく考えすぎちゃってたんだけれども、メモに書いてみたら案外どうにかなった!



実際のメモがこちら



f:id:MmRevorution:20190208140443j:plain



f:id:MmRevorution:20190208140936j:plain



字が汚くてごめんねですよほんと。お恥ずかしい。
見せるつもりで書いてなかったとはいえ;(言い訳乙)




それはともかく、現状をこうやって書き出して…


・今対象にしているモデルには、なにが紐づいているんだい?

・その紐づいたモデルに、さらに紐づいているモデルはないかい?

・紐づいているモデルのデーターまで論理削除しちゃっていいのかい?

・他に必要な条件はないかい?


ってのを考えてみると案外うまくいった。




頭で考えてまとめられて、それが実際のコードに反映できるレベルならこんなことしなくていいと思うのだけれど、特に私は…





作業中にAという問題を発見!

解決のために調べていたら、書かれている内容に対して新たにBという疑問が!

待ってこれが参考になりそう

あ、これもなんか良さそうだけど…んん…?なにこれ?
(Cという新たな謎)

あれ、私今なんのために何を調べてた?
(最悪元々のAがわからなくなることすらある)





と、こんな風になることが茶飯インシデントなのです。





Aについてデバッグ中も、関係ないBというバグを見つけてしまい、ついついBを直し始めてしまってAのことを置き去りにしちゃうことも。





なので、作業中に発見したバグや調整箇所は、メモに控えてあとで順番に対応できるようにしてみたり。



ということで、なんやかんやありつつ、とりあえず各modelの単独の削除は設定できた。


今日の授業


1:解決しなかったdeviseの絡むuserの削除(退会処理)


さっきでてきた↓の件。

<span id="linkToLogout"><%= link_to("Log Out", destroy_user_session_path, method: :delete) %></span>



メンターさんとお話して思い出したけれど、redirect_toでアクセスしようとすると、HTMLリクエストメソッドはどうしてもGETになってしまんだった。



コントローラのアクション内で deleted = true にして、その後ログアウトさせ、redirect_toでログイン画面へ戻すことになるんだけど、このコードは【method: :delete】とあるとおり、リクエストメソッドをDELETEで送らないといけない。



redirect_toだとGETだけだから、そのまま流用することはできないみたい。




さらに以下の参考サイトを見てやってみたけれど、何かがうまくいかない。メンターさんと一緒にやったけれど解決できず。





参考1:

www.rubydoc.info



参考2:
github.com



参考3:
qiita.com




私のコード側の問題である可能性が高いのだけれど、時間がかかりそうだったので後回しに。



メンターさんも検証しておいてくださるとのこと。
ありがたし。




2:GitHubのissueを活用する



さっきもちょっと書いた通り、作業中に関係ないことや追加に疑問が湧いた時、別途にメモを控えてます。



で、今の作業がおわったら、次の作業をメモから確認して順次潰していくというやり方。




ただ、せっかくGitHub使ってるんだし、今度からメモじゃなくてissueでやってみる?と。




GitHubを使い方は、13回目の授業の時に教わっていました。


(見返してみると、大したこと書いてなかった;いまもそうだな…ハハッ…。)



当時「issueも使うといいよ!」なんて聞いてたんですが、なかなかそこまでできてなかったw





ということで、今日からissueもちょっとずつ使っていってみることにしました。




Git管理はGitHub Desktopを使っているんですが、ここでcommitする時に、summaryかdescriptionのどちらかにissue番号をつければ、コードとの紐付けもできるとのこと。




せっかくある機能、少しずつ使いこなせるようになりたい!




ちょっと横道にそれるお話だけれど、プログラミングを始めたからには、終わりがないのをひしひしと感じますね…。




日々新しくなる情報…。
使いこなすにも、常にアンテナ張って新しい情報を収穫し、実際にやってみるってのがとても大事なんだなーって。




特に「実際やってみる」ってのは本当に大事。
私はプログラミング始めたら「やってみる」をだんだん怖がらなくなってきましたよ!
(まだ怖いと思う事あるけれどw)





3:その他


その他でくくるにはちょっと大きすぎるんだけれども…


・Moment.jsを使った、秒を分・時間に変換する

・nil? blank? empty? present?の違い

・JavaScriptの発祥(余談)

・本番用の新しいプロジェクトを立てる際の注意点

・雑談w


…など。



毎回ちょっとした雑談が私の癒しになっている…。



最後に侍塾についてこぼれ話

先日呟いたんですが、侍塾が「レポート書いてよ!」とメールしてきたんですよ。




今までも、授業が終わるたびに自動メールで「今日の授業どうだった?アンケートこたえてね!」ってきてたんです。




最初の頃はご丁寧に返してたんだけど…。




メンターさんの評価に繋がるでもなく(おそらく)、5分で終わるとあるものの5分で終わらない(これは私が真面目に考えすぎ)ということで、「そんな時間があるなら俺はコードを書くぜ!」という心持ちになり、途中から全くアンケートに答えてませんでした。





で、今回のメールで「2/4からレポート書いてもらうようにしたからお知らせだよ!」と。





そのおしらせ、2/1にきたんですけど情報のリリース遅すぎませんかね?




年末年始をまたぐ生徒さんは、その分1週間計画期間延長しますよ、という知らせがあったんだけれど、
それも12/27にきてたし。




レポートの中身を公開されていたので見てみると、
アンケートと同じようにgoogleアンケートフォームを使ったもの。



で、もちろん5分で終わりそうもなく。



やだなーって思ってたんですよ。
だってアンケートじゃないから多分回答必須だと思うんですよね。




しかもそのレポートできたら、メンターさんにお知らせしてね!と。





いや、いいんだけど、メール見るとレポートの中身はメンターさんには見せないってあるよ?
なんでメンターさんに報告すんの?メンターさんの仕事増やしてない?





で、今日授業終わりにメンターさんから

「侍から何か聞いてます?こっちにも適当な連絡があったけれど、正直なんだかよくわからなくて…」

とお話が。




レポートの件ならメールがきてたよ、と一部始終をお話して実際のメール・リンク先のレポート入力フォームをお見せしたところ「あ、僕に報告なんだ…。」と。





メンターさん、報告が入ることをご存知なかったんです。
侍さん、メンターさんに情報連携してあげてるの?





メンターさんが「よくわからない」っていうってことは、いろいろ情報不足してるか、ちゃんとした連携になってないかだと思うんだけど…。




それに、結局今日の授業が終わったあと侍塾からきたメールをみたら、レポートじゃなくていつものアンケートだったんだけど。




え?レポートやめたの?




でもあれから今日までのメールに、レポートは延期とか中止とかそんな情報全然なかったけど。




その後もメンターさんと色々お話していく中で、
「えぇ…」と思う情報も得ました。




うーん…。




私は本当にラッキーだったんだなって思う。
私のメンターさんは、本当によく教えてくださって、
話も聞いてくださるし、いろんな解決方法を教えてくれるの。




私のメンターさんは「 " ちゃんとした " メンターさん」だと思うよ。
他のメンターさんについてもらったことはないから、比較はできないんだけど…色々話を聞く限りそう判断できるかな。




つまり、中にはそうじゃない人も、残念ながらいるみたい。




メンターさんたちは、侍塾の職員ではないから、
侍塾側でそのメンターさんと契約時・また契約後、
きちんと管理やフォローが必要になるわけなんだけど…。




最近、ありがたいことにたまに「侍塾ってどう??」とTwitterでDMをいただくようになりました。




現状の印象をそのままお答えしてるんですけど、
また一つあまりいい印象ではない理由が増えてしまいました。




あ、それでももし何か聞きたいわよーという方は、
いつでもご連絡くださいw



私、ご覧の通り文章が冗長になってしまいがちだけど、
私の主観でどうなのかってのはできる限りお伝えします。
判断材料になれば幸いです。



ということで、また来週ー!