Spree::Variant.class_eval do
  has_many :digitals, :dependent => :destroy
  
  # Is this variant to be downloaded by the customer?
  def digital?
    digitals.present?
  end
end

Spree::Variant.class_eval do
  
  has_many :digitals, :dependent => :destroy
  after_save :destroy_digital, :if => :deleted?
  
  # Is this variant to be downloaded by the customer?
  def digital?
    digitals.present?
  end
  
  private
  
  # Spree never deleted Digitals, that's why ":dependent => :destroy" won't work on Digital.
  # We need to delete the Digital manually here as soon as the Variant is nullified.
  # Otherwise you'll have orphan Digitals (and their attached files!) associated with unused Variants. 
  def destroy_digital
    digitals.map &:destroy
  end

end

Revert "Remove delete digitals on soft delete of variant"
Revert "Remove delete digitals on soft delete of variant"

This reverts commit d23462fadb5ef049b9ed4f667bd405e343c654b1.
