有人不理解,這次的視頻給出了答案:
- class UsersController < ApplicationController
- def prepare
- session[:user] = User.find(:first)
- redirect_to action => 'show'
- end
- def show
- @user = session[:user]
- end
- def update
- @user = session[:user]
- @user.name = "Foo"
- redirect_to :action => 'show'
- end
- end
我們先調用prepare,將user放進session並show,然後我們update,結果session裏的user對象是更改了,而更改並沒有保存到數據庫。
那我們將更改放進數據庫不就行了?呵呵,這樣每次你更改user對象都需要更新session,太麻煩了。
- class UsersController < ApplicationController
- def prepare
- session[:user_id] = User.find(:first).id
- redirect_to :action => 'show'
- end
- def show
- @user = User.find(session[:user_id])
- end
- def update
- @user = User.find(session[:user_id])
- @user.name = ""
- @user.valid?
- redirect_to :action => 'show'
- end
- end
每次都去數據庫取,這樣就能保證數據的正確性。
擔心效率的朋友們,放心,還有查詢緩存呢。