Vì một lý do nào đó, current_user
trả về nil
trong bộ điều khiển ít mô hình của tôi (Subscriptions
). Tôi đã tìm thấy gì trên Internet để biện minh cho hành vi này ...Rails Devise - current_user là nil
class SubscriptionsController < ApplicationController
def new
...
end
def create
current_user # returns nil
end
end
Tôi có một thẻ meta CSRF:
<meta content="xxx" name="csrf-token">
tôi có thể cung cấp mã hơn, nhưng tôi không chắc chắn điều gì sẽ hữu ích.
CẬP NHẬT
Vì vậy, nhờ vào các ý kiến / câu trả lời, tôi đã xác định chính xác vấn đề để một hành động cụ thể: create
.
nếu tôi thêm @user = current_user
vào new
, tôi có thể hiển thị email của người dùng hiện tại trong chế độ xem new
của tôi. Tuy nhiên, trong bộ điều khiển create
của tôi, current_user
trả lại nil
.
Tôi đã truy cập hành động create
thông qua biểu mẫu (gửi).
Trước khi gửi biểu mẫu, tôi xác thực đầu vào và sau đó gửi yêu cầu tới Stripe để lấy mã thông báo ra khỏi biểu mẫu. Nếu không có lỗi (xác thực và sọc), tôi sau đó gửi biểu mẫu.
Đó có phải là nguyên nhân không?
UPDATE 2
Trong thông báo lỗi của tôi, bãi phiên của tôi là trống, trong khi nó nên chứa các thông tin CURRENT_USER ...
Mô hình của bạn dành cho người dùng có tên 'Người dùng'?vì 'current _ ***' sẽ lấy tên của mô hình. 'User_signed_in?' Trả về cái gì? – rcrmn
Nó được đặt thành false ... Thật kỳ lạ vì người dùng phải được xác thực để xem trang –