如何防止jbuilder(rails)调用数据库

时间:2017-01-26 22:08:09

标签: ruby-on-rails json performance

我的情况涉及控制器和jbuilder视图。控制器抓取一堆记录并更新它们。该视图使用jbuilder在JSON中呈现更新的书籍。

应用/控制器/ books_controller.rb

def change_book_attributes
    @books = Book.where(...)
    @books.update_all(...)
    #@books.reload
end

应用/视图/书籍/ change_book_attributes.json.jbuilder

json.seats @books, :id, :title, :state

情况是当我同时更新多本书时,我得到一个SQL UPDATE语句(如预期的那样)和多个SQL SELECT语句(意外 - 每本书一个!),而我宁愿只有一个SELECT语句(例如由@books.reload发布的一个 - 我在上面评论它,因为它目前是无意义的,因为jbuilder似乎为每本书发出了一个SELECT语句。)

如果我暂时删除了jbuilder文件中的单行,那么就没有SELECT发出 - 这告诉我发出那些SELECT语句是jbuilder(每本书一个)。

问题:jbuilder如何被迫使用现有的@books(可能在控制器中用@books.reload更新)?

(如果我改变100本书,我不想要100个SELECT语句 - 我只想要一个。)

1 个答案:

答案 0 :(得分:0)

您可以尝试将json.seats @books, :id, :title, :state更改为Json.extract! @books, :id, :title, :state,看看您是否遇到同样的问题。