現状以下の問題を認識しています。

登場モデル

以下の様なモデル例で説明します。

Account has_many posts
Post belongs_to category
Category

  • accepts_nested_attributes_for :postsでAccountのedit時にpostを複数編集

<%= f.fields_for :posts do |f| %>の場合

上記のfileds_for内に、f.object.category.try(:name)などのように記述するとN+1問題が発生します。

<%= f.fields_for :posts, f.object.posts.includes(:category) do |f| %>の場合

N+1問題は解決しますが、Postモデルにvalidates :title, presence: trueとしていた場合に、f.object.posts.includes(:category)を指定しているとpostsが再読み込みされてしまいエラー情報が消えてしまう。


上記のN+1問題を解決しつつ、postsモデルのerrors情報を保持するにはどのように記述すればよいのでしょうか?

コード例は以下のリンクにあります。

https://github.com/kntmrkm-public/fields-for-example