Есть пара мест, где я могу делать то, что мне нужно, но я не уверен, где лучшее место в соответствии с хорошими практиками.
У меня есть контроллер Orders, и после успешногоПорядок создан. Я хочу создать подписку (но только в том случае, если заказ выполнен успешно) и реферал (но только в том случае, если заказ связан с ним).
Теперь очевидным выбором является использование after_create длямодель заказа ... но ... как я могу получить данные сеанса в это?(Идентификаторы рефералов, идентификаторов друзей и идентификаторов ваучеров находятся только в сеансе, так как нет необходимости сохранять их в БД заказа).
Поэтому я должен просто создать объекты Subscription и Referral в действии createУ меня он есть в мо) или есть лучший способ?
Вот мое действие по созданию: (@ order.purchase возвращает true только если платеж был успешным)
def create
if @order.save
if @order.purchase
Subscription.create(:order_id => @order.id, :product_id => @order.product_id)
if @order.voucher
Referral.create(:user_id => session[:friend_id], :order_id => @order.id,
:voucher_amount => @voucher_value)
end
render :action => "success"
else
render :action => "failure"
end
else
render :action => 'new'
end
end
Любая помощьбыл бы признателен - я действительно хотел бы сделать это должным образом, поэтому я надеюсь, что никто не возражает против того, чтобы я спросил, что, вероятно, является простым вопросом.