0

ユーザーモデルがあります。特定のユーザーについて、このユーザーが管理者の質問の1つを解決したかどうかを知りたいです(管理者はユーザーでもあり、管理者ユーザーは常にadmin_userとして使用できます)。

ソリューションbelongs_toQuestion。質問belongs_toユーザー。ユーザーhas_manyソリューション。

特定のユーザーについて、

Solution[0].question.user.id = admin_user.id or
Solution[1].question.user.id = admin_user.id or
...
Solution[Solution.all.size - 1].question.user.id = admin_user.id

つまり、現在のユーザーがadmin_userによって投稿された質問を解決しました。

ネストされたインクルードを実行できますが、特定のユーザーのすべてのソリューションと関連データを取得した後、ユーザーがadmin_userの質問を解決したかどうかを判断するために、非常に高価なループを実行しているように感じます。

このクエリを書くのに最適な方法について何か考えはありますか?

ありがとう!リンゴ

4

1 に答える 1

0

このようなものがあなたの問題をより効率的に解決できると思います。

admin_question_ids = admin_user.questions.map(&:id)
question_ids_answered_by_user = current_user.solutions.map(&:question_id)

has_answered_admin_question = question_ids_answered_by_user.any? do |question_id|
    admin_question_ids.include?(question_id)
end
于 2013-03-25T20:07:21.813 に答える