【问题标题】:include no.of associations in to_JSON rails在 to_JSON rails 中包含 no.of 关联
【发布时间】:2013-01-17 19:56:52
【问题描述】:

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

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

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

这样做

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

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

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

提前致谢

【问题讨论】:

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


    【解决方案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% 非常低。

    【讨论】:

    • 那肯定对我有帮助。但我在不同层次上都有这种关联关系。所以我最终应该为此添加五到六个新表..
    • 您应该阅读文档,您无需添加任何新表即可让counter_cache 工作。
    • 哦,对不起..我的错..我误解了这个概念..这对我有用,谢谢..我只需要添加一个新列..
    猜你喜欢
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多