那我們做好會員的系統之後,
就可以來做一個區隔在網站操作上,這裡先從判斷是否有登入來做,
這個判斷就要直接放在使用者操作後最一開始會觸發的地方,
還記得MVC最一開始的是什麼地方嗎?
沒錯,雖然最先接觸使用者的是 view
,但這個方法我們不能直接寫在 view 裡面
那使用者操作後的第一個接觸的是誰呢?
沒錯,就是 controller
!
如果只寫在 user 的 controller
裡面,就沒辦法把這個方法拿去別的控制器裡面用,
那我們要寫在哪呢?
這個判斷是屬於全站的,所以就必須寫在上層!ApplicationController
裡面
讓大家都可以在操作之前就直接做判斷,
class ApplicationController < ActionController::Base
end
11:03 view hlper
生controller 一起出生
計算不要寫在view 寫在helper裡面
11:11 user isgned in
11:16 current user 盡量降低 會耗資源
11:21
def current_user
if user_singed_in?
#記憶
@_uu = @_uu || User.find_by(id: session[:user])
else
nil
end
end
11:23
把東西丟進實體變數
可以存活比較久 不用每次更新都要渲染一次
@_uu||= User.find_by(id: session[:user])
if @_uu
@_uu = @_uu
else
@_uu = User.find_by(id: session[:user])
11:26
11:41
第一種作法
include
把view helper 帶進去
11:54
第二種
12:00
會員權限
在article new 判斷
def new
if not user_singed_in? #判斷有無登入
redirect_to login_user_path, notice: "請先登入"
end
end
丟進