我在rails模型中有这样的关系,主题有许多单元,单元有许多问题。在控制器中返回这样的响应
@response = subject.as_json()
@response["units"] = subject.units.to_json()
在这里,我想包括该主题每个单元中可用问题的数量。
做这个
@response["units"] = subject.units.to_json(:include => :questions)
将给出包含该单元中所有问题的数组。但我只需要送去计数。
我实际上可以在单元控制器中编写一个方法来返回问题计数,但这对我来说不是很可行。因此,请告诉我是否可以通过:include直接包含count。
Thanks in advance
问题是每次这样做时都要对问题表进行计数。
您应该研究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%