module ActiveScaffold::Actions::Nested::ChildMethods
Public Class Methods
Source
# File lib/active_scaffold/actions/nested.rb, line 135 def self.include_habtm_actions(config) # Production mode is ok with adding a link everytime the scaffold is nested - we are not ok with that. unless config.action_links['new_existing'] config.action_links.add('new_existing', label: :add_existing, type: :collection, security_method: :add_existing_authorized?, ignore_method: :add_existing_ignore?) end return unless config.nested.shallow_delete unless config.action_links['destroy_existing'] config.action_links.add('destroy_existing', label: :remove, type: :member, confirm: :are_you_sure_to_delete, method: :delete, position: false, security_method: :delete_existing_authorized?, ignore_method: :delete_existing_ignore?) end config.action_links['destroy']&.ignore_method = :habtm_delete_ignore? if config.actions.include?(:delete) end
Source
# File lib/active_scaffold/actions/nested.rb, line 130 def self.included(base) super include_habtm_actions base.active_scaffold_config unless base.active_scaffold_config.frozen? end
Calls superclass method
Public Instance Methods
Source
# File lib/active_scaffold/actions/nested.rb, line 158 def add_existing do_add_existing respond_to_action(:add_existing) end
Source
# File lib/active_scaffold/actions/nested.rb, line 163 def destroy_existing return redirect_to(params.merge(action: :delete, only_path: true)) if request.get? || request.head? do_destroy_existing respond_to_action(:destroy_existing) end
Source
# File lib/active_scaffold/actions/nested.rb, line 153 def new_existing do_new respond_to_action(:new_existing) end
Protected Instance Methods
Source
# File lib/active_scaffold/actions/nested.rb, line 234 def add_existing_ignore?(record = nil) !nested&.habtm? end
Source
# File lib/active_scaffold/actions/nested.rb, line 184 def add_existing_respond_to_html if successful? flash[:info] = as_(:created_model, model: ERB::Util.h(@record.to_label)) return_to_main else render action: 'add_existing_form' end end
Source
# File lib/active_scaffold/actions/nested.rb, line 193 def add_existing_respond_to_js if successful? render action: 'add_existing' else render action: 'form_messages' end end
Source
# File lib/active_scaffold/actions/nested.rb, line 205 def add_existing_respond_to_json render json: response_object, only: active_scaffold_config.list.columns.visible_columns_names, status: response_status end
Source
# File lib/active_scaffold/actions/nested.rb, line 201 def add_existing_respond_to_xml render xml: response_object, only: active_scaffold_config.list.columns.visible_columns_names, status: response_status end
Source
# File lib/active_scaffold/actions/nested.rb, line 246 def after_create_save(record) return unless params[:association_macro] == :has_and_belongs_to_many params[:associated_id] = record do_add_existing end
Source
# File lib/active_scaffold/actions/nested.rb, line 238 def delete_existing_ignore?(record = nil) !nested&.habtm? end
Source
# File lib/active_scaffold/actions/nested.rb, line 209 def destroy_existing_respond_to_html flash[:info] = as_(:deleted_model, model: ERB::Util.h(@record.to_label)) return_to_main end
Source
# File lib/active_scaffold/actions/nested.rb, line 214 def destroy_existing_respond_to_js render action: 'destroy' end
Source
# File lib/active_scaffold/actions/nested.rb, line 222 def destroy_existing_respond_to_json render json: successful? ? '' : response_object, only: active_scaffold_config.list.columns.visible_columns_names, status: response_status end
Source
# File lib/active_scaffold/actions/nested.rb, line 218 def destroy_existing_respond_to_xml render xml: successful? ? '' : response_object, only: active_scaffold_config.list.columns.visible_columns_names, status: response_status end
Source
# File lib/active_scaffold/actions/nested.rb, line 254 def do_add_existing parent_record = nested_parent_record(:update) @record = active_scaffold_config.model.find(params[:associated_id]) if parent_record && @record self.successful = false unless parent_record.send(nested.association.name) << @record parent_record.save if successful? else false end end
The actual “add_existing” algorithm
Source
# File lib/active_scaffold/actions/nested.rb, line 265 def do_destroy_existing if active_scaffold_config.nested.shallow_delete @record = nested_parent_record(:update) collection = @record.send(nested.association.name) assoc_record = collection.find(params[:id]) collection.delete(assoc_record) else do_destroy end end
Source
# File lib/active_scaffold/actions/nested.rb, line 242 def habtm_delete_ignore?(record = nil) !delete_existing_ignore?(record) || delete_ignore?(record) end
Source
# File lib/active_scaffold/actions/nested.rb, line 172 def new_existing_respond_to_html if successful? render action: 'add_existing_form' else return_to_main end end
Source
# File lib/active_scaffold/actions/nested.rb, line 180 def new_existing_respond_to_js render partial: 'add_existing_form' end
Private Instance Methods
Source
# File lib/active_scaffold/actions/nested.rb, line 282 def add_existing_formats (default_formats + active_scaffold_config.formats).uniq end
Source
# File lib/active_scaffold/actions/nested.rb, line 286 def destroy_existing_formats (default_formats + active_scaffold_config.formats).uniq end
Source
# File lib/active_scaffold/actions/nested.rb, line 278 def new_existing_formats (default_formats + active_scaffold_config.formats).uniq end