データベース検索を Rails のインスタンス変数に割り当てると、その変数への今後のリクエストがデータベースにもヒットするのはなぜですか? これは回避できますか?
たとえば、ユーザー、リソース、オピニオンの 3 つのモデルがあり、オピニオンには has_many :through があります
@opinions = current_user.opinions # pulls in all of the user's opinions, which include respective resource ids
1. resource_id を直接呼び出しても、データベースにはヒットしません。
@opinions.each do |opinion|
opinion.resource_id # does not hit the database (as expected)
end
2. クエリを実行するとデータベースにヒットします (変数が割り当てられていても):
@opinions.find_by_resource_id(1) # DOES hit the database
#2 がデータベースにヒットするのはなぜですか? データベースにアクセスせずに同じ検索を実行する方法はありますか?
情報はすでに @opinions 変数に含まれているため、db 呼び出しは必要ないようです。