- 紅寶石2.1.4(這發生在2.1.2)
- 的Rails 4.1.6(這發生在4.1.1)的開發工作信封
我在before_action中設置@current_store。
class Store::ApplicationController < ApplicationController
before_action :set_current_store
private
def set_current_store
Rails.logger.debug "set_current_store is called"
@current_store = Store.find session[:id]
end
end
class Store::FooController < Store::ApplicationController
def index
@foos = Foo.where(store_id: @current_store.id)
end
end
然後我訪問
有時運作良好,並獲得200迴應,我可以找到「set_current_store被稱爲」 development.log,但有時我得到500,我無法找到「set_current_store在development.log中被稱爲「。
然後我重新加載並得到相同的錯誤。不過,我在vim中打開store/application_controller.rb,只保存(:w)而不更改代碼。並重新加載我總是可以得到200響應。
爲什麼before_action有時會被忽略?
我的配置/環境/ development.rb
Rails.application.configure do
config.cache_classes = false
config.eager_load = false
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = false
config.active_support.deprecation = :log
config.active_record.migration_error = :page_load
config.assets.debug = true
config.assets.raise_runtime_errors = true
config.cache_store = :redis_store, "redis://localhost:6379/0/cache", { expires_in: 90.minutes }
end
不要讓私人的方法,如果你想從另一個類 – Boti 2014-11-01 13:49:07