Sha256: ce1e7ebff89999831ba59ea7686b1446c6ae4b011f10cfd724326fecb7e54f83

Contents?: true

Size: 1.7 KB

Versions: 7

Compression:

Stored size: 1.7 KB

Contents

def delete
  update_attributes trash: true unless new_card?
end

def delete!
  update_attributes! trash: true unless new_card?
end

event :pull_from_trash, :prepare_to_store, on: :create do
  if (trashed_card = Card.find_by_key_and_trash(key, true))
    # a. (Rails way) tried Card.where(key: 'wagn_bot').select(:id), but it
    # wouldn't work.  This #select generally breaks on cards. I think our
    # initialization process screws with something
    # b. (Wagn way) we could get card directly from fetch if we add
    # :include_trashed (eg).
    #    likely low ROI, but would be nice to have interface to retrieve cards
    #    from trash...m
    self.id = trashed_card.id
    # update instead of create
    @from_trash = true
    @new_record = false
  end
  self.trash = false
  true
end

event :validate_delete, :validate, on: :delete do
  unless codename.blank?
    errors.add :delete, "#{name} is is a system card. (#{codename})"
  end

  undeletable_all_rules_tags =
    %w( default style layout create read update delete )
  # FIXME: HACK! should be configured in the rule

  if junction? && (l = left) && l.codename == 'all' &&
     undeletable_all_rules_tags.member?(right.codename)
    errors.add :delete, "#{name} is an indestructible rule"
  end

  if account && has_edits?
    errors.add :delete, "Edits have been made with #{name}'s user account.\n" \
                        'Deleting this card would mess up our history.'
  end
end

event :validate_delete_children, :validate, on: :delete do
  children.each do |child|
    child.trash = true
    add_subcard child
    next if child.valid?
    child.errors.each do |field, message|
      errors.add field, "can't delete #{child.name}: #{message}"
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
card-1.18.6 mod/01_core/set/all/trash.rb
card-1.18.5 mod/01_core/set/all/trash.rb
card-1.18.4 mod/01_core/set/all/trash.rb
card-1.18.3 mod/01_core/set/all/trash.rb
card-1.18.2 mod/01_core/set/all/trash.rb
card-1.18.1 mod/01_core/set/all/trash.rb
card-1.18.0 mod/01_core/set/all/trash.rb