0

私はこのようなレールモデルの関係を持っています。主題には多くのユニットがあり、ユニットには多くの質問があります。したがって、コントローラーがこのような応答を返します

    @response = subject.as_json()
@response["units"] = subject.units.to_json()

これで、その科目の各ユニットで利用可能な質問の数を含めたいと思います。

これをやっている

    @response["units"] = subject.units.to_json(:include => :questions)

そのユニットのすべての質問の配列が含まれます..しかし、送信する必要があるのはカウントだけです。

私は実際に質問数を返すためにユニットコントローラーにメソッドを書くことができますが、それは私にとってはあまり実現可能ではありません. それで、:include を介してカウントを直接含めることが可能かどうか教えてください。

前もって感謝します

4

1 に答える 1

1

問題は、これを行うたびに質問テーブルでカウントを実行することです。

counter_cacheRailsの機能を調べる必要があります。この応答を取得するたびにこの値が必要になるため、unit毎回カウントを実行するのではなく、親でカウントをキャッシュする方が理にかなっています。

ドキュメント: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to-label-Options

Railscast: http://railscasts.com/episodes/23-counter-cache-column

ついでに、受諾率を上げると、より良い回答が得られます。29%と非常に低いです。

于 2013-01-17T11:56:52.703 に答える