Таким образом, у меня есть объект модели, который должен вставить упаковочные листы, если модель сохранена (рассматриваемая модель предназначена для оплаты).
Я попытался сделать это в хуке after_save для модели Payment, но на самом деле он не сохранил упаковочные листы. Я перенес это на контроллер в блоке if @ payment.save, но он по-прежнему не сохраняется в моделях. Код ниже:
if @payment.save
if @payment.order.has_physical_product?
# generate packing slip for shipping
slip = PackingSlip.new(:payment_id => @payment.id, :department => "Shipping")
slip.save!
if @payment.order.has_book?
slip = PackingSlip.new(:payment_id => @payment.id, :department => "Royalty")
slip.save!
end
end
MembershipMailer.membership_email(@order) unless !@order.has_membership?
Обратите внимание, что MembershipMailer стреляет, так что я знаю, что он там, но эти упаковочные листы не будут сохраняться. Я пытаюсь повторить эту функцию вручную в консоли, и она отлично работает. Не уверен, что мешает. У меня нет проверок в модели PackingSlip на данный момент.