更新后更新关联记录

时间:2019-03-02 00:39:12

标签: ruby-on-rails

目标:更新关联的模型(列表)

如果listing.orders.count超过某个阈值,我已经成功地(在SO的帮助下)将listing.listing_status更新为某个枚举(3)。如果阈值低于一定数量,我现在需要将列表状态更新回“实时”(1)。

型号:

listing.rb

has_many :orders

order.rb

belongs_to :listings
has_one :order_1
has_one :order_2

order_1.rb

belongs_to :order

order_2.rb

belongs_to :order

order_1和2本质上是订单的变量,并存储需要它们自己的数据库的不同类型的文件。创建这些文件后,它将更新关联的订单的order_status以完成@order.update_column(order_status: n)

问题:我将能够在订单模型中执行此操作,就像在订单高于特定阈值时进行更新一样,但是我的问题是...在我的order_1控制器中更新方法,我使用update_column更新了Order模型,该模型跳过了回调。所以现在我想我需要通过我的order_1和order_2控制器(或模型)来做到这一点?

在order_1控制器中,我尝试过:

private

def update_listing
  @order_seller = Order.where(order_status: [1]).where(listing_id: Listing.ids)
  # @listing = Order.all.where(params[:listing_id])

  # if @order_seller.count < 999
  #   @listing.update_column(:listing_status, 1)
  # end

  if @order_seller.count <= 999
      @order_seller.listing.update! listing_status: 1
  end

end

我收到一条错误消息,指出注释掉的部分不存在update_column方法。

使用未注释掉的部分,我得到:未定义的方法列表

一旦创建了order_1并且列表订单低于特定阈值,如何更新列表listing_status?

1 个答案:

答案 0 :(得分:0)

还要检查回调after_createafter_update ..,并将逻辑移至模型