0

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
4

1 に答える 1

0

これは 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

于 2017-01-03T07:16:55.193 に答える