我在这样的rails模型中有一个关系,主题有很多单位和单位有很多问题。 所以在控制器返回响应这样
@response = subject.as_json()
@response["units"] = subject.units.to_json()
现在,我希望包括该主题的每个单元中可用的问题数量。
这样做
@response["units"] = subject.units.to_json(:include => :questions)
将包含该单元中所有问题的数组..但我只需要发送计数。
我实际上可以在单位控制器中编写一个方法来返回问题,但这对我来说不太可行。 所以,让我知道是否可以直接包括计数:include。
提前致谢
答案 0 :(得分:1)
问题在于,每次执行此操作时,您都会在问题表上运行计数。
您应该查看Rails中的counter_cache
功能。由于每次获得此响应时您都希望获得此值,因此有必要将计数缓存在父unit
上,而不是每次都运行计数。
Railscast:http://railscasts.com/episodes/23-counter-cache-column
如果你提高接受率,那么你会得到更多更好的答案。它非常低,为29%。