Rails 项目中未定义的设计方法

Devise methods undefined in Rails project

我有一个 Rails 5 应用程序,其中安装了 Devise gem。我的项目是以这样一种方式设置的,所有控制器都被命名空间......甚至设计控制器。

在我的路由文件中我这样做了(这将更好地解释我的命名空间结构):

controllers: {
    sessions: "api/v1/public/members/users/sessions",
    passwords: "api/v1/public/members/users/passwords",
    registrations: "api/v1/public/members/users/registrations",
},
path_names: { 
  sign_in: 'login', 
  password: 'forgot', 
  sign_up: 'register',
  sign_out: 'signout'
}

我还设置了设计视图文件以反映所需的命名空间结构。

我在 ApplicationController.rb 中包含了以下内容:

before_action :authenticate_api_v1_public_members_user!

由于我的 Devise 控制器是命名空间的,标准 'before_action :authenticate_user!' 方法需要更新为上面的方法才能工作。

我遇到的问题是 none Devise 辅助方法在我的任何视图中都可用。在视图中调用 'current_user' 或 'user_signed_in?' 时,刷新浏览器时出现 'undefined method' 错误。我也尝试为这些辅助方法命名空间,但无济于事。

更新 模型在我的应用程序中没有命名空间。我正在使用普通的用户模型。只有控制器是有命名空间的,并且结构如上面的路线所示。

有没有人遇到过类似的问题?

Devise 似乎嵌套在您 routes.rb 的 :api_v1_public_members 命名空间中。在这种情况下,它不仅会影响 authenticate_user! 方法,将其更改为 authenticate_api_v1_public_members_user!,还会影响其他方法。

  • current_user转为current_api_v1_public_members_user

  • user_signed_in?转为api_v1_public_members_user_signed_in?

这里也有类似的问题undefined method `authenticate_user! Api::PostsController in Devise / Rails 4