2

我有一个现有的 Rails 5.1 应用程序,它已经包含一个自定义用户控制器。

当我按照说明进行安装Spree时,我安装了spree_auth_devisegem并按照自述文件页面上的建议运行了迁移和其他安装命令。当我开始使用 gem 时,我发现我的 User 类存在问题,这 - 当然 - 是因为我devise gem在不使用 devise 时安装了。

在不使用设计时,我尝试按照有关如何设置自定义用户模型的说明进行操作,但是在按照这些说明并删除了spree_auth_devise我无法启动该站点之后。

当我运行安装了 gem 的站点时,我的“登录”等自定义路由不起作用。它们指向安装 spree 的路径,而不是我的 routes.rb 中定义的路径。

我不确定如何删除 gem 并让我的用户模型使用 spree。任何帮助表示赞赏。我不确定除此之外要提供哪些详细信息或代码,因为有许多文件受此影响。我会发布您认为可能有帮助的任何内容。

更新:根据下面的评论,这里是我的 routes.rb 中与狂欢相关的部分。需要帮助请叫我:

mount Spree::Core::Engine, at: '/store'

get 'login'                                 =>  'sessions#new'
get 'signup'                                =>  'users#new'
delete  'logout'                            =>  'sessions#destroy'
post 'login'                                =>  'sessions#create'

更新 2当我尝试启动服务器或运行 rake db:migrate... 时出现此错误

Exiting
/Users/user/sites/site/app/controllers/application_controller.rb:8:in `<class:ApplicationController>': uninitialized constant Spree::AuthenticationHelpers (NameError)
    from /Users/user/sites/site/app/controllers/application_controller.rb:1:in `<top (required)>'
4

1 回答 1

2

根据您的信息,试试这个:

config/initializers/devise.rb如果您还没有完成,请删除

devise 您的 routes.rb

可能看起来类似于:

devise_for :users, controllers: {
    confirmations: 'users/confirmations',
    passwords: 'users/passwords',
    registrations: 'users/registrations',
    sessions: 'users/sessions',
    unlocks: 'users/unlocks'
}

检查是否有任何与 devise/相关的代码spree_auth_devise

User在您的模型中可能如下所示:

devise :database_authenticatable, :registerable

或在您ApplicationController或任何其他控制器中(git grep it):

before_action :authenticate_user!

回滚数据库更改(适当设置 STEP 和 RAILS_ENV):

rake db:rollback STEP=1 RAILS_ENV=development

如果没有任何帮助,请尝试git revertgit reset

关于你的错误uninitialized constant Spree::AuthenticationHelpers

该模块在spree_auth_gem 此处定义,也包含ApplicationController引擎中。

如果您确实按照本指南设置了狂欢, include Spree::AuthenticationHelpers 从您的 ApplicationController.

下面的这些也可能是不必要的。我会一一删除它们,看看您的应用是否仍然有效:

include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::Common
include Spree::Core::ControllerHelpers::Order
include Spree::Core::ControllerHelpers::Store
helper 'spree/base'
于 2017-10-30T15:07:32.893 回答