Sử dụng gem Pundit bị lỗi
Mình vẫn đang chật vật với RoR cơ bản ở ngày 3. Mình dùng gem Devise và gem Pundit để làm Authorization như trong tut này http://railsapps.github.io/rails-authorization.html Tuy nhiên thì gặp lỗi như ảnh trên. Rốt cục phải sửa cụ thể ở đâu. Mọi người chỉ giúp với ạ.
Link git: https://github.com/BlazingRockStorm/let-us-go/tree/bug-Pundit
2 CÂU TRẢ LỜI
hàm Pundit dùng 1 hàm tên là current_user
để lấy ra người dùng hiện tại và xác thực trong file policy của nó
em set debug trong file policy xem có user trong đấy chưa
nếu chưa thì check lại hàm current_user xem có trả ra đúng ko (trong base_controller) thường Devise có hàm này nhưng cần check config có đúng ko nữa
em cảm ơn anh ạ. cuối cùng hoá ra em bị lỗi ở seed quên thêm seed kèm role. nên khi seed mặc định là role = "user"
, không phải "admin"
khi chỉnh lại seed thì xong rồi ạ
Mình chưa dùng gem Pundit này bao giờ. Thông thường đối với việc check phân quyền mình lựa chọn gem CanCan. Nhưng mình mạnh dạn đoán lỗi do không xác thực được quyền của user với action hiện tại.
Bạn có thể tham khảo cách handle authorization errors ở link này: https://crypt.codemancers.com/posts/2018-07-29-leveraging-pundit/#handling-errors-on-authorization
Tuy nhiên đó chỉ là cách để handle lỗi, còn bạn vẫn phải thêm quyền cho user để có thể truy cập vào các action mong muốn.