ฉันไม่พบที่ใดเลย ... ฉันจะลบ / ทำลาย / รีเซ็ต / ว่างเปล่า / ล้างเซสชันของผู้ใช้ใน Rails ได้อย่างไร ไม่ใช่แค่คุณค่าเดียว แต่คือสิ่งทั้งหมด ..
ฉันไม่พบที่ใดเลย ... ฉันจะลบ / ทำลาย / รีเซ็ต / ว่างเปล่า / ล้างเซสชันของผู้ใช้ใน Rails ได้อย่างไร ไม่ใช่แค่คุณค่าเดียว แต่คือสิ่งทั้งหมด ..
คำตอบ:
หากต้องการล้างข้อมูลทั้งหมดให้ใช้วิธีการ reset_session ในคอนโทรลเลอร์
reset_session
นี่คือเอกสารเกี่ยวกับวิธีนี้: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
รีเซ็ตเซสชันโดยการล้างอ็อบเจ็กต์ทั้งหมดที่เก็บอยู่ภายในและเตรียมใช้งานวัตถุเซสชันใหม่
โชคดี!
เซสชันในรางเป็นวัตถุแฮช ดังนั้นฟังก์ชันใด ๆ ที่มีให้สำหรับการล้างแฮชจะทำงานร่วมกับเซสชัน
session.clear
หรือหากต้องทำลายคีย์เฉพาะ:
session.delete(key)
ทดสอบในราง 3.2
เพิ่มแล้ว
ผู้คนกล่าวถึงโดยsession={}
เป็นความคิดที่ไม่ดี เกี่ยวกับsession.clear
ความคิดเห็นของ Lobati ดูเหมือนว่าคุณน่าจะดีกว่าในการใช้ reset_session [กว่า session.clear] เนื่องจากเป็นการล้างข้อมูลอื่น ๆ นอกเหนือจากที่ session.clear ทำ ภายใน reset_session เรียก session.destroy , ที่ตัวเองเรียกร้องที่ชัดเจนเช่นเดียวกับบางสิ่งอื่น ๆ
reset_session
เพราะมันทำความสะอาดอื่น ๆ นอกเหนือจากสิ่งที่session.clear
ทำ ภายในreset_session
เรียกsession.destroy
ซึ่งตัวเองเรียกร้องclear
เช่นเดียวกับบางสิ่งอื่น ๆ
หากต้องการล้างเฉพาะบางพารามิเตอร์คุณสามารถใช้:
[:param1, :param2, :param3].each { |k| session.delete(k) }
เพิ่มรหัสนี้ใน ApplicationController ของคุณ
def reset_session
@_request.reset_session
end
(ไม่รู้ว่าทำไมไม่มีใครพูดถึงรหัสนี้เพราะมันแก้ปัญหาของฉันได้) http://apidock.com/rails/ActionController/RackDelegation/reset_session
@_request.reset_session
และreset_session
การทำงานทั้งในและอาจจะทำในสิ่งเดียวกันได้หรือไม่