如何在模型中跟踪此命令
=> 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来跟踪(当我向订单添加项目时)并在控制台中打印我的消息(例如)
答案 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