したがって、オブジェクトを保持するセッション変数にオブジェクトを設定するメソッドがアプリケーションコントローラーにありました (良くないことはわかっていますが、書きませんでした。また、オブジェクトはデータベースに保存されません)。
def current_wine_club_order
if session[:dynamic_wine_club_order] && session[:dynamic_wine_club_order] != ''
return session[:dynamic_wine_club_order]
else
return WineClubOrderService.new()
end
end
私のコントローラーのこのコードは次の場所で壊れますlogger.debug { "#{@wine_club_order.inspect}" }
:
def new
@wine_club_order = current_wine_club_order
logger.debug { "#{@wine_club_order.inspect}" }
@wine_club_order.current_user = current_user
@wine_club_order.clear_errors!
self.current_wine_club_order = @wine_club_order
logger.debug { "#{@wine_club_order.inspect}" }
end
したがって、デバッグすると、これがシェルに表示されます。
>> session
!! #<NoMethodError: undefined method `[]' for nil:NilClass>
>> session[:dynamic_wine_club_order]
!! #<NoMethodError: undefined method `[]' for nil:NilClass>
>> session[:what]
=> nil
>> session.class
=> Rack::Session::Abstract::SessionHash
>> session
!! #<NoMethodError: undefined method `[]' for nil:NilClass>
>> session.nil?
=> false
何が起こっているのかわかりません。セッションはゼロですか?なぜそれは私にさまざまな答えを与えているのですか? また、アプリケーション コントローラーの before フィルターの 1 つで、session[:dynamic_wine_club_order] の値を出力します。これはすべてのリクエストに存在します。
私のログ:
session[:dynamic_wine_club_order] = #<WineClubOrderService:0x007f8a9a606ef0>