0

我在这样的 Rails 模型中有一个关系,主题有很多单位,单位有很多问题。所以在控制器中返回这样的响应

    @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 回答