Spree_auth_devise种子失败,未知列'roles.name'

时间:2014-08-09 16:23:32

标签: ruby-on-rails spree spree-auth-devise

我正在与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 =“用户”

1 个答案:

答案 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