Ruby on rails 4 Spree来宾电子邮件已保存
我已经在我的Spree应用程序中实现了电话验证 因此,用户在下单之前必须先核实电话号码,但一旦用户以来宾身份下单,下一次存储他的电子邮件时,它会直接发送到Ruby on rails 4 Spree来宾电子邮件已保存,ruby-on-rails-4,gem,rubygems,e-commerce,spree,Ruby On Rails 4,Gem,Rubygems,E Commerce,Spree,我已经在我的Spree应用程序中实现了电话验证 因此,用户在下单之前必须先核实电话号码,但一旦用户以来宾身份下单,下一次存储他的电子邮件时,它会直接发送到/checkout/address,而不必先进入/checkout/registration 我在哪里可以修改此代码,以便客人结账总是先转到/checkout/registration 编辑: 我检查了checkout_控制器,我想我可以使用checkout#edit操作编辑功能 但是我无法在gem文件中找到它。您可以为签出\u控制器创建一个装
/checkout/address
,而不必先进入/checkout/registration
我在哪里可以修改此代码,以便客人结账总是先转到/checkout/registration
编辑:
我检查了checkout_控制器
,我想我可以使用checkout#edit
操作编辑功能
但是我无法在gem文件中找到它。您可以为
签出\u控制器
创建一个装饰器,例如app/controllers/spree/checkout\u controller\u decorator.rb
,并将其更改为如下内容(装饰器文件的代码):
请注意,在用户被重定向后,您必须处理重定向回签出页面的问题
您也可以更改用户模型上的某些内容,以确保用户有电话号码,但这可能与来宾功能冲突。请添加Spree版本。我在“@order.bill_Address | |=Address.build| default”行上得到“未初始化的固定地址”。我更改了答案,请立即重试。代码不完整只是你如何解决的一个预感或方向,你会发现一些地方需要调整。该模块是必需的,否则将需要使用Spree::Address alsoThanks alot来帮助:)
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