RailsでFooがbarsをhas_manyしているとき、

foo = Foo.build()

foo.bars.build()

foo.bars.to_a

としてもクエリは走らないが、

foo = Foo.build()

foo.bars.build()

foo.save!

foo.bars.to_a

とするとbarsがSELECTされる。

単純な場合はいいけど、Foo.includes(bars: :bazs}).find_or_initialize_by(...)みたいに大きな木を読み込みまたは作成して、子や孫も追加・更新して、その後別の関数で木全体を処理する、みたいなときに困る。

Reply to this note

Please Login to reply.

Discussion

No replies yet.