【发布时间】:2017-06-12 12:54:28
【问题描述】:
我遇到了一个涉及控制器和jbuilder 视图的情况。控制器抓取一堆记录并更新它们。该视图使用 jbuilder 以 JSON 格式呈现更新的书籍。
app/controllers/books_controller.rb
def change_book_attributes
@books = Book.where(...)
@books.update_all(...)
#@books.reload
end
app/views/books/change_book_attributes.json.jbuilder
json.seats @books, :id, :title, :state
情况是,当我同时更新多本书时,我得到一个 SQL UPDATE 语句(如预期的那样)和多个 SQL SELECT 语句(出乎意料 - 每本书一个!),而我更喜欢只有一个 SELECT 语句(例如由@books.reload 发布的一个 - 我在上面评论了它,因为它目前毫无意义,因为 jbuilder 似乎为每本书发布了一个 SELECT 语句)。
如果我暂时删除 jbuilder 文件中的单行,则不会发出 SELECT - 这告诉我是 jbuilder 发出了这些 SELECT 语句(每本书一个)。
问题:如何强制 jbuilder 使用现有的@books(可能在控制器中更新为@books.reload)?
(如果我更改 100 本书,我不想要 100 个 SELECT 语句 - 我只想要一个。)
【问题讨论】:
-
你有没有找到解决这个问题的方法。我们遇到了一个非常相似的问题。
-
对不起,不......但我在发布这个问题后不久也停止了搜索; 1年零9个月过去了,也许你的运气会更好。
标签: ruby-on-rails json performance