Spree 通过登录将用户与订单相关联

Spree Associate user with order with Login

我有一个可以使用 Facebook 和其他社交网络登录的 Spree 应用程序,但我的问题是我无法在登录时将用户与订单相关联,我试过 associate_user!就像我下面的示例,但购物车总是空的。

这是我在 omniauthcallback 中的代码

if current_order
    current_user = spree_current_user || @user
    current_order.associate_user!(current_user)
    session[:guest_token] = nil
end

我发现这是 Spree_auth_devise 中的一个错误,它已在 3.2 版本中解决。0.beta 即将发布,问题出在 Wardan.rb

Warden::Manager.after_set_user except: :fetch do |user, auth, opts|
  if auth.cookies.signed[:guest_token].present?
    if user.is_a?(Spree::User)
      Spree::Order.where(email: user.email, guest_token: auth.cookies.signed[:guest_token], user_id: nil).each do |order|
        order.associate_user!(user)
      end
    end
  end
end

您需要从上面的代码中删除这部分email: user.email