module Card::Director::All

director-related Card instance methods

Attributes

director[W]

Public Instance Methods

act(options={}) click to toggle source
# File lib/card/director/all.rb, line 30
def act options={}, &block
  if act_card
    add_to_act options, &block
  else
    start_new_act(&block)
  end
end
act_card() click to toggle source
# File lib/card/director/all.rb, line 38
def act_card
  Card::Director.act_card
end
act_card?() click to toggle source
# File lib/card/director/all.rb, line 42
def act_card?
  self == act_card
end
clear_action_specific_attributes() click to toggle source
# File lib/card/director/all.rb, line 98
def clear_action_specific_attributes
  self.class.action_specific_attributes.each do |attr|
    instance_variable_set "@#{attr}", nil
  end
end
director() click to toggle source
# File lib/card/director/all.rb, line 10
def director
  @director ||= Director.fetch self
end
identify_action() click to toggle source
# File lib/card/director/all.rb, line 19
def identify_action
  @action =
    if trash && trash_changed?
      :delete
    elsif new_card?
      :create
    else
      :update
    end
end
prepare_for_phases() click to toggle source
# File lib/card/director/all.rb, line 14
def prepare_for_phases
  reset_patterns
  include_set_modules
end
restore_changes_information() click to toggle source
# File lib/card/director/all.rb, line 89
def restore_changes_information
  # restores changes for integration phase
  # (rails cleared them in an after_create/after_update hook which is
  #  executed before the integration phase)
  return unless saved_changes.present?

  @mutations_from_database = mutations_before_last_save
end
save(*_args) click to toggle source
Calls superclass method
# File lib/card/director/all.rb, line 51
def save *_args
  act { super }
end
save!(**args) click to toggle source
Calls superclass method
# File lib/card/director/all.rb, line 46
def save! **args
  as_subcard = args.delete :as_subcard
  act(as_subcard: as_subcard) { super **args }
end
save_if_needed() click to toggle source
# File lib/card/director/all.rb, line 67
def save_if_needed
  validate
  save if save_needed?
end
save_if_needed!() click to toggle source
# File lib/card/director/all.rb, line 72
def save_if_needed!
  validate
  save! if save_needed?
end
save_needed?() click to toggle source
# File lib/card/director/all.rb, line 77
def save_needed?
  # (
  new? || test_field_changing? || subcards.cards.any?(&:save_needed?)
  # ).tap do |r|
  #   # binding.pry if r
  #   puts "save needed for #{name}".yellow if r && !new?
  # end
end
update(*_args) click to toggle source
Calls superclass method
# File lib/card/director/all.rb, line 59
def update *_args
  act { super }
end
Also aliased as: update_attributes
update!(*_args) click to toggle source
Calls superclass method
# File lib/card/director/all.rb, line 63
def update! *_args
  act { super }
end
Also aliased as: update_attributes!
update_attributes(*_args)
Alias for: update
update_attributes!(*_args)
Alias for: update!
valid?(*_args) click to toggle source
Calls superclass method
# File lib/card/director/all.rb, line 55
def valid? *_args
  act(validating: true) { super }
end

Private Instance Methods

add_to_act(options={}) { || ... } click to toggle source
# File lib/card/director/all.rb, line 121
def add_to_act options={}
  director.appoint self unless @director
  director.head = true unless options[:validating] || options[:as_subcard]
  yield
end
save_test_fields() click to toggle source
# File lib/card/director/all.rb, line 110
def save_test_fields
  %i[name db_content trash type_id codename]
end
start_new_act(&block) click to toggle source
# File lib/card/director/all.rb, line 114
def start_new_act &block
  self.director = nil
  Director.run_act(self) do
    run_callbacks(:act, &block)
  end
end
test_field_changing?() click to toggle source
# File lib/card/director/all.rb, line 106
def test_field_changing?
  save_test_fields.any? { |fld| send "#{fld}_is_changing?" }
end