保存前在另一个控制器中调用对象 rails 4
call object in another controller before save rails 4
我有一个名为 reportapproval 的对象。我以表格形式启动对象,在保存之前我希望它通过充电控制器。如果收费没有通过,那么它不会保存对象,但如果收费,那么它会保存。
我正在尝试将未保存的对象传递给充电控制器。我怎样才能做到这一点。这是各自控制器中的 2 个动作。
reportapproval_controller.rb
def create
@reportapproval = current_manager.reportapprovals.new(authorization_params)
if @reportapproval.valid?
if @reportapproval.manager_paying_report == true
flash[:notice] = "Please make payment before proceeding"
redirect_to new_managers_charge_path(id: @reportapproval_id)
charge_error = nil
end
end
end
charge_controller.rb
def create
# Amount in cents
@reportapproval = Reportapproval.new(session[:reportapproval_id])
@manager = current_manager
@amount = @reportapproval.manager_request_report_type
customer = Stripe::Customer.create(
:email => @manager.email,
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
...
)
@reportapproval.report_paid = true
@reportapproval.save!
redirect_to managers_dashboard_path, :notice => "You have successfully ..."
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to managers_charges_path
end
end
如何将此对象传递给 charge,然后返回到 reportapproval,然后再保存到数据库。我正在使用 mongoid 顺便说一句。
提前致谢。
你可以,但你不应该那样做。保存带有标志的 Reportapproval 以指示尚未付款。在 Stripe 程序完成后删除标志以允许用户完全访问。
顺便说一句,这也将帮助您了解是否以及有多少用户在 Stripe 过程中停止并且不再回来。
我有一个名为 reportapproval 的对象。我以表格形式启动对象,在保存之前我希望它通过充电控制器。如果收费没有通过,那么它不会保存对象,但如果收费,那么它会保存。
我正在尝试将未保存的对象传递给充电控制器。我怎样才能做到这一点。这是各自控制器中的 2 个动作。
reportapproval_controller.rb
def create
@reportapproval = current_manager.reportapprovals.new(authorization_params)
if @reportapproval.valid?
if @reportapproval.manager_paying_report == true
flash[:notice] = "Please make payment before proceeding"
redirect_to new_managers_charge_path(id: @reportapproval_id)
charge_error = nil
end
end
end
charge_controller.rb
def create
# Amount in cents
@reportapproval = Reportapproval.new(session[:reportapproval_id])
@manager = current_manager
@amount = @reportapproval.manager_request_report_type
customer = Stripe::Customer.create(
:email => @manager.email,
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
...
)
@reportapproval.report_paid = true
@reportapproval.save!
redirect_to managers_dashboard_path, :notice => "You have successfully ..."
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to managers_charges_path
end
end
如何将此对象传递给 charge,然后返回到 reportapproval,然后再保存到数据库。我正在使用 mongoid 顺便说一句。 提前致谢。
你可以,但你不应该那样做。保存带有标志的 Reportapproval 以指示尚未付款。在 Stripe 程序完成后删除标志以允许用户完全访问。
顺便说一句,这也将帮助您了解是否以及有多少用户在 Stripe 过程中停止并且不再回来。