Tôi đang tìm câu trả lời chi tiết hơn và tôi đã tìm ra câu trả lời thông qua điều tra. Các điều sau áp dụng nếu dự án của bạn đang lưu trữ phiên của nó trong cơ sở dữ liệu Postgres.
LƯU Ý: Ứng dụng của bạn có thể có kết nối đến nhiều hơn một DB. Tôi vẫn chưa tìm ra cách Rails xác định kết nối nào để sử dụng. Dự án của tôi session_store.rb
trống.
Bạn sẽ tìm thấy thông báo flash trong bảng sessions
. Có một cột có tên là data
có chứa chuỗi được mã hóa base64.
Nếu bạn giải mã chuỗi, bạn sẽ tìm thấy một blob nhị phân không chỉ chứa các thông báo flash (ở dạng marshalled, vì vậy chúng có thể đại diện cho bất kỳ loại đối tượng Ruby nào), mà còn là mã thông báo CSRF. .
Toàn bộ blob thực sự là một bảng băm được marshalled. Nó có thể được unmarshalled trong Ruby với Marshal.load
, và sau khi bất kỳ thay đổi được thực hiện, nó có thể được remarshalled với Marshal.dump
.
Nguồn
2017-05-12 22:02:13
Bạn cần đặt chúng nhưng không cần sử dụng đèn flash var. Điều này thậm chí có ý nghĩa? Chỉ cần hỏi để hiểu những gì bạn muốn đạt được. – pduersteler
Nếu chúng được lưu trữ trong cookie, tôi sẽ đặt chúng trực tiếp: 'cookies [: flash] [: notice] =" Hello World! ". Nhưng chúng được lưu trữ ở một nơi khác. Vì vậy, câu hỏi đặt ra là: nơi chúng được lưu trữ :) – fl00r
Từ railsguides: Đèn flash là 'phần đặc biệt của phiên' được xóa với mỗi yêu cầu. và cũng Tất cả các cửa hàng phiên sử dụng cookie để lưu trữ ID duy nhất cho mỗi phiên (bạn phải sử dụng cookie, Rails sẽ không cho phép bạn chuyển ID phiên trong URL vì điều này kém an toàn hơn). Tôi nghĩ rằng nếu chúng tôi đang sử dụng cookieStore để lưu trữ dữ liệu phiên chỉ sau đó flash sẽ được lưu trữ trong cookie. Nói chung, chúng tôi chỉ sử dụng cookieStore, vì vậy tôi nghĩ rằng thông báo flash phải ở đâu đó trong cookie [: session]. Tôi cũng là người mới trong đường ray. đúng nếu tôi đã sai lầm. – rtcoms