September 28, 2006


[Rails 筆記] 在 session 中儲存物件以文找文

答案是利用 Ruby 的 Marshal 物件,如下例:

class AdminController < ApplicationController
def do_login
if request.post?
user = User.login(params[:uid], params[:pwd])
if (user)
session[:user] = Marshal.dump(user)
end
end
end
end

然後在 application.rb 中:

class ApplicationController < ActionController::Base
model :user
def setup_variables
if (session[:user])
@login_user=Marshal.load(session[:user])
end
end
end
這樣有什麼好處,好處是對於一些常用的物件,例如 Query DB 得到的 Model,我不用在每個 page 都再去 query database,將他記錄在 session 中即可,而且可以避免 db schema 更改後還要改 code 的窘境。





Posted by at 天空部落 │00:27 │回應(3)引用(2)Programming
相關閱讀

引用URL

http://blog.yam.com/syshen/trackback/6490786
回應文章
其實
session[:user] = user
user = session[:user]
即可
不需要使用 Marshal
Posted by thegiive at 2006-09-28 07:11:08
恩恩,原來如此,感謝指教
Posted by syshen at 2006-09-28 10:55:47
建議你可以買一本 Agile Web Development with Rails, 這些都是很入門的東西, 不用自己花時間去摸
Posted by moming at 2006-10-27 09:39:56