У меня есть следующие классы:Rails 5 зависимый:: уничтожить не работает
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
Здесь я пытаюсь переопределить уничтожить метод, где я в конечном счете хочу сделать это:
update_attribute(:deleted_at, Time.now)
Когда я запускаю следующее заявление в консоли Rails: ProductCategory.destroy_all
я получаю следующие выходные данные
Category Destroy!
Category Destroy!
Category Destroy!
Примечание: I ч ave три категории, и каждая категория имеет более одного Продукта. Я могу подтвердить его ProductCategory.find(1).products
, который возвращает массив продуктов. Я слышал, что реализация изменена в Rails 5. Любые вопросы о том, как я могу заставить это работать?
EDIT
То, что я в конце концов, хочу есть, мягкие удалить категорию и все связанные с ним продукты в одном дыхании. Это возможно? Или вы сможете перебирать каждый объект продукта в обратном вызове before before? (Последний вариант для меня)
Удалите оба метода уничтожения и повторите попытку. –
Мне кажется, что вы преодолеваете метод destroy_model destroy, и что вы должны называть «super» in destroy? –
Я действительно не предлагаю перезаписывать методы ActiveRecord. сделайте свой собственный, как 'update_as_destroyed' и' update_as_destroyed_all', вместо того, чтобы перезаписывать существующие. – Kkulikovskis