はじめに
こんばんは。
今日ももうこんな時間になってしまいました。
has_many :through
について読むことを目標にしつつ、
Dockerを勉強するために最近本腰を入れて入門したRustで折角だからと小さいソフトウェアを開発していたり(完全に has_many :through
を読むのに疲れてしまい寄り道していたという反省)、朝測った体重が増加していたことにショックを受けたりと色々あった1日でした。
よんだ
(理解したとは言えないのは私の不徳の致すところ
結果というなの感想ふわっと
-
has_and_belongs_to_many
になかったthrough
についてのReflectionを作成している。気合(のようなもの)を入れて読む必要がある。
一つのファイルに複数classを定義しているのを何度か見かけているのだけど自分の現在関わっているrailsプロジェクトではあまり見ない。自分も参加してから覚えている限りそういうファイルを書いたことがない。どういう時に複数クラスを一つのファイルに定義すると効果的なんだろう?
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/reflection.rb#L19
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/reflection.rb#L768
-
delegateしてる。なんとなく
:through
がやってることに気づいた気がする・・・
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/reflection.rb#L769
https://github.com/rails/rails/blob/fc5dd0b85189811062c85520fd70de8389b55aeb/activesupport/lib/active_support/core_ext/module/delegation.rb#L200
- delegateのtoオプションを読んでいく。
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/reflection.rb#L803
力尽きた感ある。:(´ཀ`」 ∠):
でもなんとなく has_and_belongs_to_many
より :through
の実装は delegate
してることが主なんだな。
だから、関連を持ったモデルのattributeにアクセスできるのかとふわっとイメージできた。
昨日と今日でふたつの多対多実装を読んでみた。
どちらがどうだという理解までまとめるのいけるのか?と不安になってきた。
明日は別のテーマにして少し軽いものをはさみたい気持ち。。
では良い夜をおやすみなさい。
Happy coding!