对于特定的API调用,当直接在Api控制器中调试时,当尝试访问当前用户时,即使在控制器中设置了before_action :authenticate_api_v1_user!
,也会将其视为nil。
奇怪的是,当我尝试访问current_user
时,日志仍然显示一个Postgres SQL查询,当我在SQL客户端运行它时,返回我需要的用户。但是这个用户不会在变量中设置:
User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."uid" = $1 LIMIT $2 [["uid", "email@email.com"], ["LIMIT", 1]]
↳ app/controllers/api/v1/api_controller.rb:28:in `current_user'
nil
其他控制器中的其他API调用不会发生这种情况,因为我可以访问current_user
而没有任何问题。
User Load (137.3ms) SELECT "users".* FROM "users" WHERE "users"."uid" = $1 LIMIT $2 [["uid", "email@email.com"], ["LIMIT", 1]]
↳ app/controllers/api/v1/api_controller.rb:28:in `current_user'
#<User id: 29, provider: "email", uid: "email@email.com", allow_password_change: false, name: nil, nickname: nil, image: nil, email: "email@email.com", created_at: "2019-12-16 14:58:31", updated_at: "2022-05-19 18:22:05", parent_id: nil, role: "admin", first_name: "Fito", last_name: "Hoyos", company: nil>
对于所有测试,我使用相同的3个标题:
- 用户ID
- 访问令牌
- 委托人
1条答案
按热度按时间von4xj4u1#
我的问题是关于类和示例方法的概念。为了提高代码的可读性,我重构了多个方法和文件,其中一些方法是类方法,不能访问current_user变量。