Spree 来宾电子邮件已保存
Spree Guest email is saved
我在 Spree 应用程序 中实施了 phone 验证。
所以用户在下订单之前必须先验证 phone 号码,但是一旦用户以访客身份下订单,下次他的电子邮件将被存储并直接转到 /checkout/address
没有先去 /checkout/registration
。
我在哪里可以修改此代码,以便客人结账总是首先转到 /checkout/registration
编辑:
我检查了 checkout_controller
,我想我可以使用 checkout#edit
操作来编辑功能。
但我无法在 gem 文件中找到它。
您可以为 checkout_controller
创建装饰器,例如 app/controllers/spree/checkout_controller_decorator.rb
并将此 method 更改为如下所示(装饰器文件的代码):
module Spree
CheckoutController.class_eval do
def before_address
# if the user has a default address, a callback takes care of setting
# that; but if he doesn't, we need to build an empty one here
if current_user.phone_number.present?
@order.bill_address ||= Address.build_default
@order.ship_address ||= Address.build_default if @order.checkout_steps.include?('delivery')
else
# some error telling that you need to fill the phone number
redirect_to registration_path
end
end
end
end
请注意,在用户被重定向后,您将不得不处理重定向回结帐页面的问题
您也可以更改用户模型的某些内容以确保用户拥有 phone 号码,但它可能会与访客功能冲突。
我在 Spree 应用程序 中实施了 phone 验证。
所以用户在下订单之前必须先验证 phone 号码,但是一旦用户以访客身份下订单,下次他的电子邮件将被存储并直接转到 /checkout/address
没有先去 /checkout/registration
。
我在哪里可以修改此代码,以便客人结账总是首先转到 /checkout/registration
编辑:
我检查了 checkout_controller
,我想我可以使用 checkout#edit
操作来编辑功能。
但我无法在 gem 文件中找到它。
您可以为 checkout_controller
创建装饰器,例如 app/controllers/spree/checkout_controller_decorator.rb
并将此 method 更改为如下所示(装饰器文件的代码):
module Spree
CheckoutController.class_eval do
def before_address
# if the user has a default address, a callback takes care of setting
# that; but if he doesn't, we need to build an empty one here
if current_user.phone_number.present?
@order.bill_address ||= Address.build_default
@order.ship_address ||= Address.build_default if @order.checkout_steps.include?('delivery')
else
# some error telling that you need to fill the phone number
redirect_to registration_path
end
end
end
end
请注意,在用户被重定向后,您将不得不处理重定向回结帐页面的问题
您也可以更改用户模型的某些内容以确保用户拥有 phone 号码,但它可能会与访客功能冲突。