记住在Rails中从DB查询返回的记录

时间:2013-06-17 22:02:01

标签: ruby-on-rails ruby-on-rails-3 activerecord

我目前使用表单

的查询
 @recordsfound = Model.where(...)

它位于我的控制器中,并返回与查询匹配的所有记录。我正在使用分页来一次显示有限数量的记录。但是,当我选择显示下一页时,将再次运行查询。有没有办法存储在实例变量以外的变量中返回的记录,因此不需要重新运行查询?

非常感谢你们

1 个答案:

答案 0 :(得分:1)

我不完全确定我理解你的意思,但是如果你想让查询每次只运行一次,即使在后续访问中也是如此,你可以使用片段缓存。

Rails会延迟加载,然后在视图中遇到查询时使用缓存。

<% results.each do |result| %>
  <% cache result do %>
    <%= result.foo %>
  <% end %>
<% end %>

如果您有任何依赖模型,则必须确保在必要时更新缓存时使缓存过期:

belongs_to :result, touch: true

请注意,如果您处于开发环境中,则查询仍将运行。您可以在development.rb配置文件中更改此设置。如果您确实更改了此设置,请不要忘记还原它。否则会发生奇怪的事情,你会浪费时间去弄清楚为什么你的变化不可见。

  config.action_controller.perform_caching = true