パRails🚂
rails s
できない可能性が高いです。
@motohiro-mm
@moegi
6-5-2 319p columnから
6-6-1 「イベント編集機能を作る」まで。
PR:https://github.com/PerfectRubyonRails-Rindoku/Perfect_Ruby_on_Rails_Ch6/pull/11
6-6-2 「イベント削除機能を作る」から。🚂
@sharoa
Event#created_by?
メソッドを使用して、イベントを作成したユーザーがイベントを詳細ページを閲覧した時のみリンクを表示できるようになる。.col-8
と.col-4
を数値を変えることで表示が変更したのが確認できてよかった。@hiromisugie
名前重要
という非常に重要そうなコラムを皆さんと確認できて良かった)def created_by?(user)
return false unless user
owner_id == user.id
end
@moegi29
@shodan
Event.find_by!(...)
というビックリマークバージョンを使っているのは、レコードが見つからなかったときに例外をraise
したいからっぽい?find_by
だとレコードが見つからなかったときの返り値はnil
。@ayu-0505
id
→mentioning_id
みたいに)、なるほどと思いました。@motohiro-mm
created_events
が今後他の関連づけるときに名前が衝突するためにあえてその名前にした事がわかって納得しました。名前大事
.col-
で12分割していることを初めて知りました!勉強になりました〜localhost
と127.0.0.1
の違いでした@sharoa
@sadanora
6-6-2 「イベント削除機能を作る」から
6-7-1 「イベント参加機能の作成」の途中まで。
PR: https://github.com/PerfectRubyonRails-Rindoku/Perfect_Ruby_on_Rails_Ch6/pull/12
6-7-1 329p 「イベント参加処理の作成」から。🚂
@sharoa
@hiromisugie
@sadanora
%button.{ "data-toggle": "modal", "data-target": "#createTicket" }
じゃなくて%button.{ "data-toggle" => "modal", "data-target" => "#createTicket" }
:
を使ってしまうとうまく動かないみたいなので、=>
を使う@motohiro-mm
""
は使えるけど、シンボル自体に""
も含まれてしまう-
はそのままでは使えず(エラー)、"-"
で囲ったりすれば一応使えるas: :別名
で別名をつけられる
×
:バツの特殊文字
@sharoa
@ayu-0505
6-7-1 329p 「イベント参加処理の作成」
PR: https://github.com/PerfectRubyonRails-Rindoku/Perfect_Ruby_on_Rails_Ch6/pull/13
6-7-1 331p 「参加者一覧表示機能を作る」から。🚂
@sharoa
:
と=>
について、昨日の話から、sadanoraさんが確認してくれて、:でも動くということがわかった。(本で2パターンで書かれているのが気になる。)@moegi29
=>
だったのでより謎が深まった。@sadanora
@ayu-0505
=>
と:
について、RailsとRubyでまた作法や挙動が違うかもしれないという可能性を知ることができた。@hiromisugie
=>
)というと、Rubyのハッシュと結びつけて考えてしまうけど、Railsのお作法で=>
を使う場合にちょっとルールが違う場合があるかもしれない??なんというか難しいなと思いました。@motohiro-mm
add_index :tickets, %i[event_id user_id],unique: true
がきちんと動作して、重複して参加登録されずにActiveRecord::RecordNotUnique(間違ってたらすいません)が出ているところを見れて良かったです!@sadanora
@shodan
6-7-1 331p 「参加者一覧表示機能を作る」から
335pまで。
PR:
6-7-1 336p 冒頭から。🚂
@sharoa
authenticate
メソッドが呼ばれていました。includes
はpreload
かeager_load
のどちらかを選択して実行している。includes
は使わない。(どちらが実行されているかが不明でそれは良くないこと。)explain
も含めて、preload、eager_load、includesを調べてみたいと思います。@motohiro-mm
includes
はpreload
とeager_load
をどちらかを選んで実行している
includes
は使わないexplain
を使うとDBのパフォーマンスとか速度とかそういうのを見ることができるので、それらを見てpreload
とeager_load
のどちらが良いかを自分で判断する@ayu−0505
includes
メソッドはpreload
、eager_load
の両メソッドのうちのどちらかをRailsが自動選択して行なっている。どのような挙動になるか分からないので、仕事においては基本使わない。explain
メソッドを使用するとDBにおけるパフォーマンスを計測できるので、発行されるSQLとその結果を付き合わせながら、どちらのメソッドを使うか自身で選択した方が良い。@moegi29
includes
メソッドはpreload
かeager_load
のどちらかを選択して実行してくれているexplain
メソッドで発行されているSQLを計測できる。動くことが第一だけどパフォーマンスも気にかけられると良い。データが溜まっていくようなサービスを作る場合はパフォーマンスも考えたほうが良さそう。@sadanora
includes
はpreload
かeager_load
どちらかを選んでよしなに実行してくれる
includes
を使わずに明示的にそれぞれのメソッドを実行した方がよいexplain
でSQLの実行結果を確認できる。
Decorator
ActiveDecorator
のようなgemを導入してDecorator層を設けるといいかも。@hiromisugie
includes
メソッドは、preload
とeager_load
をよしなに選んでやってくれる。お仕事では、「よしなに」だと困るのでどちらが良いかを検証した上でpreload
とeager_load
どちらかを選んで使う。SQLの読み込みを見比べるなどしてどちらが良いか確認する。(explain
というのが使える??)→Railsガイド:EXPLAINを実行する
user.hoge.〜
となっていると、少なくともuserモデルの何かの状態だなとあたりをつけることができる。完璧に理解できたかちょっと不明ですが、なるほど!と思いました。@motohiro-mm
@shodan
P336 「実際のキャンセル処理を〜」 から P340 COLUMN「コントローラの粒度と名前付け」 まで
PR:https://github.com/PerfectRubyonRails-Rindoku/Perfect_Ruby_on_Rails_Ch6/pull/15
P341 「6-8-2 退会処理の作成」から🚂
@sharoa
!
をつけて例外を発生させるコードにしている。bullet
をあとで入れてみようと思います。resources
メソッドで紐づけられる基本の7つのアクション以外でアクションが新しく欲しくなった時には新設するのではなく、別のコントローラーを作る、という考え方もある。@hiromisugie
@ayu-0505
find_by!
のように意図的にエラーを発生させてユーザーに404画面を表示させる、というテクニックがまだ使いこなせないです。retirements
コントローラーの作成は派生的でなかなか難しかったです。@shodan
@moegi29
@motohiro-mm
dependent: :destroy
form_with
のときはlocal: true
だったが、link_to
はremote: true
らしい…