在to_JSON rails中包含no.of关联

时间:2013-01-17 06:44:51

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

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

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

现在,我希望包括该主题的每个单元中可用的问题数量。

这样做

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

将包含该单元中所有问题的数组..但我只需要发送计数。

我实际上可以在单位控制器中编写一个方法来返回问题,但这对我来说不太可行。 所以,让我知道是否可以直接包括计数:include。

提前致谢

1 个答案:

答案 0 :(得分:1)

问题在于,每次执行此操作时,您都会在问题表上运行计数。

您应该查看Rails中的counter_cache功能。由于每次获得此响应时您都希望获得此值,因此有必要将计数缓存在父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%。