如何在Rails模型中导致关联回调

时间:2019-06-30 13:50:59

标签: ruby-on-rails callback associations

如何在模型中跟踪此命令

=> order = Order.create
=> order.items << Item.first // this command

如果我有这样的模型:

class Order < ApplicationRecord
   has_many :order_items
   has_many :items, through: :order_items
end
class Item < ApplicationRecord
   has_many :order_items
   has_many :orders, through: :order_items
end
class OrderItem < ApplicationRecord
   belongs_to :order
   belongs_to :item
end

例如,我尝试使用after_add,但没有成功。  例如我的任务:    在控制器的(OrderController)方法中创建:

def create
 @order = Order.create(order_params)
 @order.items << Item.find(params[:id])
end

而且我有模型Order或Item来跟踪(当我向订单添加项目时)并在控制台中打印我的消息(例如)

1 个答案:

答案 0 :(得分:3)

查看有关Association Callbacks的Rails指南。例如,有一个after_add回调。

# in your Order model
has_many :items, after_add: :track_item_added

private

def track_item_added(item)
  # your tracking code, for example
  Rails.logger.debug("Item ##{item.id} added to order ##{id}")
end