我的情况涉及控制器和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语句 - 我只想要一个。)
答案 0 :(得分:0)
您可以尝试将json.seats @books, :id, :title, :state
更改为Json.extract! @books, :id, :title, :state
,看看您是否遇到同样的问题。