我正在与spree_auth_devise一起安装Spree。在通过种子设定或运行命令bundle exec rake spree_auth:admin:create
以下是完整的错误消息:
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'roles.name' in 'where clause': SELECT COUNT(DISTINCT `spree_users`.`id`) FROM `spree_users` LEFT OUTER JOIN `spree_roles_users` ON `spree_roles_users`.`user_id` = `spree_users`.`id` LEFT OUTER JOIN `spree_roles` ON `spree_roles`.`id` = `spree_roles_users`.`role_id` WHERE `roles`.`name` = 'admin'
我已按照以下步骤安装spree_auth_devise,并确认已创建迁移并成功运行:
bundle exec rake spree_auth:install:migrations
bundle exec rake db:migrate
bundle exec rails g spree:auth:install
由于在seeds.rb中运行此行,我收到错误:
Spree::Auth::Engine.load_seed if defined?(Spree::Auth)
运行时收到同样的错误:
bundle exec rake spree_auth:admin:create
我也遵循了这些说明:
此时,如果您正在使用spree_auth_devise,则需要 在config / initializers / spree.rb中更改此行:
Spree.user_class =“Spree :: LegacyUser”
对此:
Spree.user_class =“用户”
答案 0 :(得分:0)
我的问题最终很简单。我不应该包括spree_auth_devise。以下是正确的步骤:
gem 'spree', github: 'spree/spree', :branch => '2-3-stable'
$ bundle install
$ rails g spree:install --migrate=false --sample=false --seed=false
config/initializers/spree.rb by changing this line: Spree.user_class = "Spree::User" to this: Spree.user_class = "User"
$ rails g spree:custom_user User
$ rake db:migrate