Rails在控制台中更新嵌套属性

时间:2018-05-25 04:09:42

标签: ruby-on-rails ruby

我有两种模式: -

class Order < ApplicationRecord
  has_many :order_items, inverse_of: :order, dependent: :destroy
  after_update :update_qantity
  def update_quantity
   self.order_items.each do |oi|
    if oi.saved_change_to_quantity?
      #some logic
    end
  end

end

class OrderItem < ApplicationRecord
  belongs_to :order, inverse_of: :order_items
end

现在,当我从rails控制台执行此操作时: -

ord = Order.first  
ord.order_items.first.update_attributes(quantity: 101)
ord.save!

控件确实进入update_quantity方法,但saved_change_to_quantity?是假的(由byebug测试)。我应该如何更新嵌套属性,以便控制确实进入if语句。

1 个答案:

答案 0 :(得分:0)

得到我想要的东西: -

Order.first.update_attributes(order_items_attributes: {id: "you_order_item_id", quantity: 101})