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
我有一个可以使用 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