를 작동하지 않습니다 파괴 나는 다음과 같은 클래스가 :레일 5 의존 :
update_attribute(:deleted_at, Time.now)
: 여기
class Product < ApplicationRecord
belongs_to :product_category
def destroy
puts "Product Destroy!"
end
end
class ProductCategory < ApplicationRecord
has_many :products, dependent: :destroy
def destroy
puts "Category Destroy!"
end
end
가, 나는 결국이 작업을 수행하려는 방법을 파괴 오버라이드 (override)하는 것을 시도하고있다 나는 레일 콘솔에 다음 문을 실행하면
는 : ProductCategory.destroy_all
를 나는 다음과 같은 출력을
Category Destroy!
Category Destroy!
Category Destroy!
주를 얻을 : I 시간 3 개의 카테고리가 있으며 각 카테고리에는 하나 이상의 제품이 있습니다. 제품 배열을 반환하는 ProductCategory.find(1).products
으로 확인할 수 있습니다. Rails 5에서 구현이 변경되었다는 소식을 들었습니다. 어떻게 작동시킬 수 있습니까?
편집
나는 결국, 소프트에 범주와 한 번에 모든 관련 제품을 삭제한다 원하는 것은. 이것이 가능한가? 아니면 파괴 전 콜백의 모든 Product 객체를 반복 할 수 있습니까? 당신은 당신의 파괴 방법에서 슈퍼를 호출해야
파괴 방법을 모두 제거하고 다시 시도하십시오. –
그것은 당신이 active_model 파괴 방법을 능가하고 있고 파괴에서 "super"라고 불러야한다고 생각합니까? –
저는 ActiveRecord 메서드를 덮어 쓰는 것을 권장하지 않습니다. 기존의 것을 덮어 쓰는 대신에'update_as_destroyed'와'update_as_destroyed_all'처럼 자신 만의 것을 만드십시오. – Kkulikovskis