iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

Rails 手工打造自己的部落格 系列 第 24

Rails 手工打造自己的部落格 24 - 會員權限

  • 分享至 

  • xImage
  •  

那我們做好會員的系統之後,
就可以來做一個區隔在網站操作上,這裡先從判斷是否有登入來做,

這個判斷就要直接放在使用者操作後最一開始會觸發的地方,
還記得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

丟進


上一篇
Rails 手工打造自己的部落格 23 - 資料關聯性
下一篇
Rails 手工打造自己的部落格 25 - 留言
系列文
Rails 手工打造自己的部落格 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言