Kiểm soát truy cập trong đường ray được thực hiện ở cấp bộ điều khiển, không phải cấp mô hình. Do đó, rails không cung cấp cơ chế để truy cập người dùng hiện tại, cookie, v.v., từ mã mô hình bên trong. Bạn có thể chuyển dữ liệu vào mô hình bằng các tham số đến các phương thức, nếu bạn chọn. Tuy nhiên, điều đó sẽ bỏ qua các quyết định thiết kế của một số lập trình viên giỏi nhất trong ngành, vì vậy tôi nghĩ đó có lẽ không phải là một lựa chọn tốt.
Nói cách khác, đừng làm những gì bạn đang cố gắng làm. Đưa kiến thức về cách thực hiện mọi việc trong mô hình của bạn, nhưng đặt quyền kiểm soát xung quanh những người có thể thực hiện chúng trong bộ điều khiển.
Mặt khác, nếu bạn đang cố gắng lưu trữ người dùng hiện tại vì lý do nào đó, thì bạn nên làm điều đó bằng một số loại liên kết (hoặc tài liệu lồng nhau, vì bạn đang sử dụng mongo). Trong trường hợp đó, không sử dụng current_user
bên trong mô hình, nhưng thay vì tạo attr_accessor
trên người dùng, đặt người dùng trên phiên bản mô hình của bạn thành current_user
trong bộ điều khiển, sau đó lưu nó theo cách bạn cần trong lệnh gọi lại của mình.