Суть проста. Модель Order имеет адрес своего получателя и отдельно адрес своего отправителя. Задача: как сохранить данные адреса получателя в сессий до создания заказа, так как необходимо провести расчеты стоимости заказа учитывая данные адреса получателя и сохранить их вместе одновременно в модели Order. Хотел бы сохранить его заранее в сессий во избежания лишних update ов базы и просто лишнего create и лишнего find. Просто как лучше реализовать?
class Order < ApplicationRecord
belongs_to :user, optional: true
serialize :order_info
geocoded_by :recipient_adress, :latitude => :recipient_latitude, :longitude => :recipient_longitude
after_validation :geocode, if: ->(obj){ obj.recipient_adress.present?}
end
class OrdersController < ApplicationController
include OrderHelper
before_action :authenticate_user!
before_action :check_session, only: [:pre_order]
expose_decorated :orders, ->{current_user.orders}
expose_decorated :order
def create
@order = current_user.orders.build(order_params)
@order.order_info = session[:cart]
if @order.save
redirect_to root_path, notice: "Successfully"
else
flash[:notice] = "Please enter a valid address!"
render 'pre_order'
end
end
def recipient_adress
end
def pre_order
@current_order = session[:cart].values
@cost_of_shipping = session[:cost_of_shipping]
end
def destroy
end
def show
render component: 'Orders', props: { orders: orders }
end
private
def check_session
redirect_to root_path if session[:cart] == nil
end
def order_params
params.require(:order).permit(:recipient_adress)
end
end