Моему пользователю разрешено удалять некоторые из ресурсов, которые он сам создал, но когда он уничтожает ресурс, возникает проблема, потому что у меня есть модель, которая называется resourcequantity, которая зависит от модели ресурса, и я не хочусоздайте зависимое уничтожение, так как это повлияет на рабочие группы, которые мой пользователь уже создал ( рабочая группа - это модель, содержащая несколько ресурсов через resource_quantities, см. ниже ).
То, что я пытаюсь сделать, - это позволить моему пользователю мягко удалять свои ресурсы, сохраняя ресурс в базе данных, чтобы сохранить все документы без изменений, даже если некоторые ресурсы были уничтожены.
В настоящее время я использую драгоценный камень паранойи, и я попытался внедрить зависимый:: обнулить без большого успеха.При использовании гема паранойи я получил NoMethodError для класса nill, так как он будет искать только те ресурсы, для которых selected_at равен нулю.
Я немного растерялся и не знаю, с чего начать.
Вот мои три модели
class Resource < ApplicationRecord
acts_as_paranoid
has_many :workgroups, through: :resource_quantities
has_many :resource_quantities, inverse_of: :resource, dependent: :nullify
accepts_nested_attributes_for :resource_quantities, allow_destroy: true
end
class ResourceQuantity < ApplicationRecord
belongs_to :workgroup, optional: true, inverse_of: :resource_quantities
belongs_to :resource, optional: true, inverse_of: :resource_quantities
accepts_nested_attributes_for :resource, :allow_destroy => true
validates :workgroup, uniqueness: { scope: :resource }
end
class Workgroup < ApplicationRecord
acts_as_paranoid
has_many :resource_quantities, inverse_of: :workgroup, dependent: :destroy
has_many :resources, through: :resource_quantities, dependent: :nullify
accepts_nested_attributes_for :resource_quantities, allow_destroy: true
belongs_to :contractor
belongs_to :workgroup_library, optional: true
validates :name, presence: true
end
Возможно ли сделать что-то подобное, когда ресурс будет мягко удален?
def total_cost_price
total_cost_price = 0
self.resource_quantities.each do |f|
total_cost_price += f.resource.purchase_price
end
total_cost_price.round(2)
end
Я не лучший в рубине, поэтому, если у вас есть какие-либо советы, пожалуйста, не стесняйтесь поделиться.Заранее спасибо