# 【第12週】パRails輪読会 \(2022\-10\-10\~ 2022\-10\-14\) ###### tags: `パRails(2回目)` - [開催概要](https://hackmd.io/rOcLR0riRqmOgEF0_Ssm0A?both) - [パRails輪読会 ノートまとめ](https://hackmd.io/5emISRvRRXapmakSiHnFJg?both) ## パRailsのサンプルコード・正誤表 - [サポートページ:パーフェクトRuby on Rails【増補改訂版】:|技術評論社](https://gihyo.jp/book/2020/978-4-297-11462-6/support) - [パRails 環境構築の手順](https://hackmd.io/y7qb2BRMT2Wd4tAtKYObcQ) ## 目次 [TOC] ------ ## 2022\-10\-10(月) 祝日なのでお休み ------ ## 2022\-10\-11 (火) ### 連絡事項や確認・相談 ### タイムキーパー - @fuwa ### ドライバー - @Saki ### 読んだところ - P.314 [6-5 イベントの閲覧機能を作る]〜 ### 次回 - P.319 [6-6 イベントの編集・削除機能を作る]〜 ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - hikaru - 関連などの本質(実態?)をちゃんと分かった上で衝突しない名前をつけることが大事 - i18nなど、さらっと出てきているけれど自分で書こうとすると書けなさそうだと思った。プラクティスの範囲でもあるし復習しなきゃ - @fuwa - 名前重要。名前が将来衝突してしまわないように計画的に命名すべし - lメソッドはlocalizeメソッドのエイリアス。日時をいい感じに日本語化してくれる。view以外では`I18n.l` を使う - @Saki - サンプルコードをコピペしたので変なエラーを出してしまいました。すみません🙏 - i18n最近さわってなさすぎて`l`のこと知らなかったです。 - 伊藤さんの記事:[【初心者向け・動画付き】Railsで日時をフォーマットするときはstrftimeよりも、lメソッドを使おう \- Qiita](https://qiita.com/jnchito/items/831654253fb8a958ec25) - i18nでの設定によって、日時の表示を日本人が読みやすい形式に変えてくれる。 `"#{l(@event.start_at, format: :long)} - #{l(@event.end_at, format: :long)}"` - 名前重要。自作サービスであまり考えないでコードを書いていたら、カラム名と変数名がかぶってしまって、`name.name`みたいな分かりにくいコードができてしまったので気をつけたい。 - @maimu_x2x - Railsの日時表現は直近のプラクティスでやったばかりで、i18nを使ってフォーマット指定ができるのは便利だと思った。 - いつも日時のフォーマットどうやるか忘れて検索してしまうため・・・ - https://qiita.com/jnchito/items/831654253fb8a958ec25 - @tomonari - 登録しておけばi18のlメソッドで日時の表示もできるんですね。便利! - ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @maimu_x2x - クレカの不正利用にあってカード止められてしまい辛みです - @fuwa - チーム開発で詰まっていたところが解決したのでちょっと安心しました〜 :tea: - 腰痛改善を試みて、最近ベッドの低反発マットレスを外しています。腰痛は良くなりましたが睡眠の質が低下しました。。 - hikaru - fuwaさんsakiさん、司会・ドライバーありがとうございます〜! - いえいえ〜! - チーム開発進まぬ...ペアプロお願いしようかな〜 :gogo!!: - @tomonari - この後rubykaigiの振り返りイベントがあるので楽しみです。 - Saki - 大倉さん、梅本さんありがとうございました! - ------ ## 2022\-10\-12(水) ### 連絡事項や確認・相談 ### タイムキーパー - tomonariさん ### ドライバー - Saki ### 読んだところ ### 次回 - P.327 [6-7-1途中 イベント参加ビューとルーティングの修正]〜 ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - @maimu_x2x - 実運用だと物理削除より論理削除を使うことが多そうだと思った。 - referencesを使用してmigrationファイル作成コマンドを実行したとき、以下の3つのオプションが自動で付与される。 - null: false - foreign_key: true - index - indexは大量データを扱うときに便利らしい - hikaru - 関連が使える時はなるべく関連を使ってデータを取得するのが良いらしい - !つきのメソッドを使うとエラーが起きた時に気づける - さらっとやってるけどモデルの設定難しい... - @tomonari - indexってfalseにすることがあるんですね。実はindexの使い方よくわかっていない:cry: - @fuwa - 削除するときは`destroy` ではなく`destroy!`メソッドを使った方が良い。中断された時にエラーをraiseするので、すぐに気付ける。 - `index: false` オプションでインデックスが作られないようにできる。場合によってはインデックスがないときの方が良いこともあるらしい。(書き込み速度が遅くなってしまう) - - @haruguchi - `t.references :user` でforeign_key設定しなかったのなんでだろう?と考えたけど、null許容するからかな?でも`optional: true`だったら関係ないのかな? :kininaru: - 今回`index: false`にした理由は複合インデックスをもうすでに貼ってあるのでeventにインデックスはると重複するからかなぁと思いました。 - Saki - `references`を使うと、デフォルトでindexがつく/foreign:true/ - インデックスはつけると検索速度が上がるが、データ書き込みが遅くなるので、なんでもつければいいものではない。付けるかはデータ数が多くなるか等ケースバイケース - [【Rails】referencesの使い方・外部キー制約/index/null: false](https://programming-i.net/references) - `index: false`でインデックスつけなくする - 関連付けで`belongs_to :<関連先モデル>, optional: true`と書くと、関連先のモデルのデータがなくてもバリデエラーが起こらない - なんでuser_idは`foreign_key :true`削除したのか? つけると絶対にデータにuser_idないとエラーになるのかな?tional :true`で回避してるので ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @maimu_x2x - 3年ぶりにお弁当を持って会社行きましたw - 会社の椅子は腰が痛くならないため、高い椅子はやっぱりいいなと思いました - @tomonari - haruguchiさん昨日のイベントお疲れ様でした!いろいろなお話が聞けて楽しかったです。 - ありがとます!ぜひ来年登壇してください! - @fuwa - チーム開発がまたちょっと進んだのでちょっと嬉しい - 節約のため3食オートミール生活始めました。いつまで続くかは謎です。 - @Saki - haruguchiさんイベントの主催おつかれさまでした!わきあいあいとしてて素敵な会社さんだなと思いました。 - 良い会社です。絶賛募集中! - 松本の宿は年内にとれば間に合うかな... - hikaru - はるぐちさんイベントありがとうございました〜わいわいしてましたね〜 - こちらこそありがとうございます!来年行きましょう! - 来年のRubyKaigiは5月でしたっけ?何してるかな... - @haruguchi - Q&AでEnumeratorの知見がないことがわかった - コレクションというかイテラブルオブジェクト ------ ## 2022\-10\-13(木) ### 連絡事項や確認・相談 ### タイムキーパー - tomonariさん ### ドライバー - Sakiさん ### 読んだところ - P.327 [6-7-1途中 イベント参加ビューとルーティングの修正]〜 ### 次回 - P.331 [6-7-1 参加者一覧表示機能を作る]〜 ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - @maimu_x2x - form_withでlocal:trueか否かでHTMLをrenderするかAjax通信になるかが設定できる - grep便利! - @tomonari - 直接入力対策でnewにエラーメッセージを表示するようにしておくんですね。自作アプリではこういうのに気が回らなそう。 - @hyumanase - 久しぶりにパRailsと対峙して、遠い目になっておりますが、声出しできて楽しかったです! - :tada::100::+1: - こちらの輪読会あと1,2ヶ月は続きそう?とのことで、2022年は少しでもRailsと仲良くなれたら - @Saki - `tickets`のnewアクションのエラーは、ログイン時に発生するもの。ログイン前は、`application_conrtoller`の`before_action :authenticate`が優先されるので実行されない。 - アプリ作るの楽しい!そろそろテストかな - @haruguchi - 途中から来たのでよくわかってないですが、いい感じにできてきてるのでは? :waiwai: :たしカニ: - URL直撃ち対策忘れるのはあるあるだけど、やばいやつ、、、 - フィヨルド入るまで考えたこともなかったです... - 僕よく直打ちで入ります! ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @maimu_x2x - 最近キャリア迷子なため、私も転職見据えて動こうと思い始めました🤧 - 会社に春口さんというお名前で問い合わせがあって、おや?と思いましたが全然別の春口さんでした - 実社会では本名で活動してるし、現存する春口はもういないですね、、、:cry: - @hyumanase - sakiさんのエディタの配色いかしてますね〜〜😎(前もそういう話あったような) - やったーありがとうございます😆 https://marketplace.visualstudio.com/items?itemName=ayakoSky.fluffy-dark-theme - @Saki - ヒュウマさん声出し参加ありがとうございました! - :waiwai:😆 - 朝の輪読会、チェリー本の時から知っていたので終わるの寂しいですね。トミーさんharuguchiさんお疲れさまでした! - 老兵は去る のみ… :cry: - ろうへい... - [yatsuhashi \| FBC](https://bootcamp.fjord.jp/users/823) - @haruguchi - 今日は10時には寝よ! - - ----- ## 2022\-10\-14(金) ### 連絡事項や確認・相談 ### タイムキーパー - Saki ### ドライバー - Hikaruさん ### 読んだところ - P.327 [6-7-1途中 参加者一覧表示機能を作る]〜 ### 次回 - P.337 [6-8 退会機能を作る]〜 ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - @maimu_x2x - findとfind__byの使い分けが難しい。 - idを扱う場合は基本的にfindと覚えておく - @hyumanase - 実際にイベントページができあがっていく様子がたのしい :waiwai!: - N+1問題、初めて知りました - はるぐちさんが共有してくれた記事[ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita](https://qiita.com/k0kubun/items/80c5a5494f53bb88dc58) 著者の方がRubyコミッターの方だった!Qiita記事とかコミッターの方の記事はおおいに参照してもよさそう。 - k0kubunさんですね! - @Saki - `destroy`アクションでは、必ずリダイレクトをさせるので、ビューにインスタンス変数を渡す必要がないため、`ticket`はローカル変数で定義する。あまり考えずにインスタンス変数を定義しがちなので気をつけねば - 必ずかどうかはわからないかも!renderだったらインスタンス変数にする必要があるのが罠みがある! :wana!: - 自作サービスで私もeachで回してURLをリンクとして埋め込んでるのですが、ぱっと見どういうURLにとぶか分かりにくいので、ヘルパー使おうと思いました - `find_by!`を使うのはない時にエラー発生させたいから、とあるが、コンソールで試したら`find`もエラーが出た - N+1問題を回避するためのメソッドの違い。この記事はrubyコミッターの方が書いてる。 - [ActiveRecordのjoinsとpreloadとincludesとeager\_loadの違い \- Qiita](https://qiita.com/k0kubun/items/80c5a5494f53bb88dc58) - @tomonari - find&find_by!やincudes&eager_loadなど似た機能のメソッドの違いも覚えていきたいです。 - ヘルパーは便利に使えそうですが、グローバル変数と同じくあまり使わない方がいいのかもですね。ビューに書きたい時ぐらいかな? - hikaru - インスタンス変数はビューに渡すオブジェクトを表す - ビューにロジックを書くと見づらいのでヘルパーメソッドに定義する - `includes`は関連するオブジェクトも取ってきてN+1問題も回避できる - `dependent: :destroy`で子レコードも一緒に削除される - @haruguchi | メソッド | なかった時の挙動 | | :-: | :-: | |find |ActiveRecord::NotFoundError | |find_by| nil | |find_by! |ActiveRecord::NotFoundError| ヘルパーメソッドがOOPっぽくないっていうの言われてみてなるほど〜という感じだった find_by!の件わかった ticketsのidではないからだ!idはidでも外部キー ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @maimu_x2x - リリース前なのでずっとテストの打鍵をやっていて脳みそがジンジンしています - 他サービスがテストどうやって回しているかが本当に気になる - 自動化したいけど、規模が大きいと問題もありそう - @hyumanase - 来週金曜LTでるので準備早くしなければと思ってます〜〜 - hikaru - SQL?ActiveRecord?なんもわからん期 - wakaru!とてもわかる!わからんのがわかる! - SQL書き方ドリルを3回読むんじゃ! - Saki - ドライバーありがとうございました! - いえいえ〜ハマらなくてよかった... - @haruguchi - 明日は休み!明日は休み!... -----
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up