>source

이 명령을 모델에서 추적하는 방법

=> 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

주문 또는 품목이 모델을 추적하여 (주문에 품목을 추가 할 때) 콘솔에 메시지를 인쇄합니다 (예 :).

  • 답변 # 1

    Association Callbacks에 관한 Rails Guide를 살펴 보자. 예를 들어, 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
    
    

  • 이전 ruby on rails - 날짜와 일, 월, 년의 차이를 어떻게 알 수 있습니까? 빼기를 사용할 수 있습니까?
  • 다음 discord.js - 불일치 JS 메시지 레벨링 시스템