如何防止rails缓存Model.all查询

时间:2012-06-13 13:51:34

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

我不明白为什么在开发模式下,即使在插入新记录之后,查询也会被缓存。我的意思是,在创建新记录后,我的Model.all不会从数据库中提取该记录。我检查过IRB,记录仍然存在。一旦我重新启动服务器,就会显示新记录。

以下是详细信息......

  • 所有环境配置都是由“rails new app”生成的标准配置

首次启动服务器后,当我点击pagecontroller #index时,日志为

Processing by PagesController#index as HTML
  Page Load (14.9ms)  SELECT "pages".* FROM "pages" 
  Rendered pages/index.html.erb within layouts/application (4.1ms)
Completed 200 OK in 237ms (Views: 167.5ms | ActiveRecord: 16.9ms)

创建页面后,用户将被重定向到索引操作,日志为

Started GET "/pages" for 127.0.0.1 at 2012-06-13 09:40:27 -0400
 Processing by PagesController#index as HTML
 Rendered pages/index.html.erb within layouts/application (1.6ms)
Completed 200 OK in 5ms (Views: 5.2ms | ActiveRecord: 0.0ms)

我的行动

def index
  @pages = Page.all
end

def create
  @page = Page.new(params[:page])
  if @page.save
    flash[:notice] = "Page saved Successfully"
    redirect_to :action => "index"
  else
    flash[:alert] = "Errors on saving the page"
    render :action => "new"
  end
end

我对rails非常陌生,在我对这个问题的研究中找不到任何东西。有人能帮我吗。

GEMS

  • actionmailer(3.2.4)
  • actionpack(3.2.4)
  • activemodel(3.2.4)
  • activerecord(3.2.4)
  • activeresource(3.2.4)
  • activesupport(3.2.4)
  • arel(3.0.2)
  • bcrypt-ruby(3.0.0)
  • builder(3.0.0)
  • bundler(1.1.4)
  • ci_reporter(1.7.0)
  • coffee-rails(3.2.1)
  • coffee-script(2.2.0)
  • coffee-script-source(1.3.3)
  • erubis(2.7.0)
  • execjs(1.4.0)
  • hike(1.2.1)
  • i18n(0.6.0)
  • 旅程(1.0.3)
  • json(1.7.3)
  • libv8(3.3.10.4 x86_64-darwin-11)
  • mail(2.4.4)
  • 元类(0.0.1)
  • mime-types(1.18)
  • 摩卡(0.11.4)
  • multi_json(1.3.6)
  • mynyml-redgreen(0.7.1)
  • 多语言(0.3.3)
  • rack(1.4.1)
  • rack-cache(1.2)
  • rack-ssl(1.3.2)
  • rack-test(0.6.1)
  • rails(3.2.4)
  • railties(3.2.4)
  • rake(0.9.2.2)
  • rdoc(3.12)
  • ruby​​gems-bundler(1.0.2)
  • rvm(1.11.3.3)
  • sass(3.1.19)
  • sass-rails(3.2.3)
  • 链轮(2.1.3)
  • sqlite3(1.3.6)
  • term-ansicolor(1.0.7)
  • therubyracer(0.10.1)
  • thor(0.15.2)
  • 倾斜(1.3.3)
  • tinymce-rails(3.5)
  • treetop(1.4.10)
  • tzinfo(0.3.33)
  • uglifier(1.0.3)

1 个答案:

答案 0 :(得分:1)

Rails 3.2.4存在缓存findall的问题。我建议你按照这个问题升级到更新版本的Rails:Rails 3.2.4 SQL query is caching results on find(:all)