我有一个已经包含自定义用户控制器的现有Rails 5.1应用程序。
当我按照安装Spree
的说明操作时,我安装了spree_auth_devise
gem并按照自述页面上的建议运行了迁移和其他安装命令。当我开始使用gem时,我发现我的User类存在问题,当然 - 这是因为我在不使用设计时安装了devise gem
。
我尝试按照有关如何在不使用设计时设置自定义用户模型的说明进行操作,但在按照这些说明操作并删除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)>'
答案 0 :(得分: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 revert或git reset
关于您的错误uninitialized constant Spree::AuthenticationHelpers
此模块在spree_auth_gem
here中定义,并且也包含在the engine的ApplicationController
中。
如果您通过this guide 从 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'