2014-04-04 26 views
0

我正在使用Rails 4.1.rc2。即將推出的Rails 4.1已經發生了變化,會話序列化的方式現在在commit這裏和link to guideRails 4.1會話的序列化

我沒有更多可以到我的對象存儲在會話EQ

session[:user] = User.new

當我訪問session[:user]我得到一個String

任何方式恢復到舊的?或存儲對象的Rails 4.1會話

+3

我只是想提一提,實在是一個壞主意,複雜的對象存儲類似的ActiveRecord模型到會話中。最好將id存儲在會話中,並從數據庫重新加載對象。 – spickermann

回答

1
# app/controllers/application_controller.rb 
helper_method :session_user 
def session_user 
    @session_user ||= Marshal.load(session[:user]) 
end 

def set_session_user(user) 
    session[:user] = Marshal.dump(user) 
end 

# set 
set_session_user(User.new) 

# reconstitute and perform operation 
session_user.awesome = 'rad' 
session_user.save! 

看到http://www.ruby-doc.org/core-2.1.1/Marshal.html