跳轉到內容

Ruby on Rails/ActionController/Sessions

來自華夏公益教科書

有關會話的技術解釋,請檢視關於會話的維基百科文章。

在 Rails 中,您有一些選項可以儲存會話。大多數情況下,您希望將會話儲存在伺服器上,但是對於與安全性相關的資料,您可能希望考慮將會話儲存在資料庫中。要更改會話儲存,請編輯config/initializers/session_store.rb並務必仔細閱讀RoR 網站

使用您的會話

[編輯 | 編輯原始碼]

與引數一樣,Rails 提供了一種簡單的方法來訪問您的會話。請考慮以下示例

def show_details
  #we may use this inside a user-specific action
  User.find(session[:current_user_id])
end

如您所見,您以類似於引數的方式訪問會話。儲存會話並不複雜

def index
  #we have some code here to get the user_id of a specific (logged-in) user
  session[:current_user_id] = id
end

要銷燬會話,只需將它分配一個 nil 值

session[:current_user_id] = nil

顯示快閃記憶體訊息

[編輯 | 編輯原始碼]

快閃記憶體是會話中非常特殊且有用的部分。您可能已經在檢視檔案中發現過它。以下是它們的工作原理:如上所述,快閃記憶體很特殊。它們只存在一次,並在每次請求後被銷燬。快閃記憶體可用於向用戶顯示錯誤訊息或通知(例如,當用戶嘗試登入或其請求導致錯誤時)

在操作中,快閃記憶體可以使用類似於

def check
  #code that does some validation
  flash[:notice] = "Successfully logged in"
end

在檢視中,您可以像這樣訪問它

<% if flash[:notice] -%>
    <%= flash[:notice] %>
<% end -%>
<!-- maybe some HTML-Code -->
<% if flash[:warning] -%>
    <%= flash[:warning] %>
<% end -%>

如示例所示,您不限於單個快閃記憶體。可以按您在控制器中定義的名稱訪問多個快閃記憶體。

華夏公益教科書