2012-06-02 90 views
2

我並不確定此係統是否緩存數據,但它具有一些緩存特性。Rails 3.2.4 SQL查詢緩存結果查找(:所有)

基本上我搞亂了rails 3.2.4,系統開始不顯示一些結果。我認爲這對於我放入代碼模型的默認範圍是露水的,但即使如此,它也應該顯示所有結果,而不是9箇中的10個。但是,我總是會缺少我創建的新記錄以及我創建的任何其他記錄那個紀錄。我檢查了我的sqlite3數據庫,看看數據是否放在那裏,並檢查所有的連接信息,並確保緩存關閉。但是,如果我更改了任何模型文件或控制器文件,然後保存它,我可以獲取數據。甚至不會改變代碼,只是觸摸命令可以做到這一點。我認爲這與範圍有關,但我不能確定。我找到的一個解決方案就是回到Rails 3.2.2。它接近要做的伎倆。但我仍然不喜歡像我剛剛屈服的感覺一樣去解決這個問題。

development.rb

# Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

house.rb

class House < ActiveRecord::Base 
    attr_accessible :name 

    default_scope :order => 'created_at DESC', :limit => 50 
    validates_presence_of :name 
    has_many :roomies 
end 

schema.rb

ActiveRecord::Schema.define(:version => 20120601204050) do 
    create_table "houses", :force => true do |t| 
    t.string "name" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 
end 

houses_controller.rb

class HousesController < ApplicationController 
    def index 
    @houses = House.all 
    end 

    def new 
    @house = House.new 
    end 

    def show 
    @house = House.find(params[:id]) 
    end 

    def create 
    @house = House.new(params[:house]) 

    if @house.save 
     flash[:success] = "Your house has been created and is ready to have people added to it." 
     redirect_to houses_path 
    else 
     flash[:error] = "Your house could not be added dew to a error!" 
     render :action => :new 
    end 
    end 
end 

房子/ index.html.erb

<%= debug @houses %> 

正如你可以看到什麼超級瘋狂。

回答

3

Rails 3.2.4對作用於作用域的調用進行了無意緩存。嘗試導軌3.2.5,而不是,其中包括this commit

+0

甜蜜感謝您的答案這真的有幫助 – Brandt