mod/history/lib/card/action/admin.rb
class Card
class Action
# methods for administering card actions
module Admin
# permanently delete all {Action actions} not associated with a {Card}
def delete_cardless
left_join = "LEFT JOIN cards ON card_actions.card_id = cards.id"
joins(left_join).where("cards.id IS NULL").delete_all
end
# permanently delete all {Action actions} associate with non-current
# {Change changes}
def delete_old
Card::Change.delete_all
Card.find_each(&:delete_old_actions)
Card::Act.delete_actionless
end
# If an act is given then all remaining actions will be attached to that act.
# Otherwise the actions keep their acts.
def make_current_state_the_initial_state act=nil
Card::Change.delete_all
Card.find_each(&:delete_old_actions)
action_update = { action_type: Card::Action::TYPE_OPTIONS.index(:create) }
action_update[:card_act_id] = act.id if act
Card::Action.update_all action_update
if act
Card::Act.where("id != :id", id: act.id).delete_all
else
Card::Act.delete_actionless
end
end
end
end
end