簡體   English   中英

如何以正確的方式在一個動作中創建多個模型?(Ruby on Rails 5)

[英]How to create multiple models in one action in the Right Way?(Ruby on Rails 5)

事實上,當我寫一個動作有多個模型的代碼時,這個問題一直在我腦海中浮現。

在創建、更新操作中,我發現除了使用關聯構建 API 之外,否則我無法避免當一個 model 失敗但其他成功並且它們已經存在時我無法贖回或撤銷它們。

情況如下: 創建訂單時從倉庫中取出一件商品。 而且訂單實際上與倉庫中的貨物沒有關系

我提供了這個問題的一些簡單示例:

def create
    @order = PackageOrder.new(order_params)
   
    if @order.save
        stock_record = PackageStockRecord.new(stock_record_params)
        if stock_record.save
            msg = 'stock_record saving success'
        else
            $ERROR.error "stock_record: #{stock_record.error_msgs}"
            msg = 'stock_record saving failed'
        end
        redirect_to action: 'index', msgs: msg
    else
        $ERROR.error "package_order: #{@order.error_msgs}"
        flash.now[:error] = 'package_order create failed.'
        render 'new'
    end
end

從上面的例子可以發現,當@order創建或者更新成功后,后續的模型就不能再影響或者通知它了。 (除了構建 api

所以我想要的是撤消先前模型的操作,並在后續模型以正確的方式失敗時通知它。 (不是通過使用構建 api)

或者是否可以建立一個短暫的協會?

這是正常的嗎? 我的意思是這種情況是不可避免的還是可能會累積導致系統錯誤,或者我不應該關心它。

這種情況有沒有相關的文件或流程可以借鑒?

如果您希望 model 受到另一個 model 中更改的影響,那么這是通過關聯完成的,畢竟 model 只是映射到表的 class,因此您可以在 ruby 代碼中與表進行交互。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM