module Engine2::ActionApproveSupport
Attributes
validations[R]
Public Class Methods
included(action)
click to toggle source
# File lib/engine2/action.rb, line 798 def self.included action action.http_method :post if action.is_a? Class end
Public Instance Methods
after_approve(handler, record)
click to toggle source
# File lib/engine2/action.rb, line 813 def after_approve handler, record end
allocate_record(handler, json_rec)
click to toggle source
# File lib/engine2/action.rb, line 828 def allocate_record handler, json_rec model = assets[:model] handler.permit json_rec.is_a?(Hash) val_fields = (dynamic? ? static.validate_fields : @validate_fields) || model.type_info.keys left_fields = (json_rec.keys - val_fields) puts "Left: #{left_fields.inspect}" unless left_fields.empty? handler.permit left_fields.empty? record = model.call(json_rec) record.validate_fields = val_fields record end
before_approve(handler, record)
click to toggle source
# File lib/engine2/action.rb, line 810 def before_approve handler, record end
invoke(handler)
click to toggle source
# File lib/engine2/action.rb, line 846 def invoke handler json = handler.post_to_json record = allocate_record(handler, json[:record]) validate_and_approve(handler, record, json[:parent_id]) ? static.record(handler, record) : {record!: record.to_hash, errors!: record.errors} end
post_run()
click to toggle source
Calls superclass method
# File lib/engine2/action.rb, line 870 def post_run super validate_fields *node.parent.*.meta[:field_list] unless validate_fields end
pre_run()
click to toggle source
Calls superclass method
Engine2::ActionModelSupport#pre_run
# File lib/engine2/action.rb, line 865 def pre_run super execute "action.errors || [action.parent().invoke(), action.panel_close()]" end
record(handler, record)
click to toggle source
# File lib/engine2/action.rb, line 842 def record handler, record {errors: nil} end
validate(name, &blk)
click to toggle source
# File lib/engine2/action.rb, line 852 def validate name, &blk (@validations ||= {})[name] = blk end
validate_and_approve(handler, record, parent_id)
click to toggle source
# File lib/engine2/action.rb, line 816 def validate_and_approve handler, record, parent_id static.before_approve(handler, record) record.valid? validate_record(handler, record, parent_id) if record.errors.empty? static.after_approve(handler, record) true else false end end
validate_fields(*fields)
click to toggle source
# File lib/engine2/action.rb, line 802 def validate_fields *fields if fields.empty? @validate_fields else @validate_fields = assets[:model].type_info.keys & (fields + assets[:model].primary_keys).uniq end end
validate_record(handler, record, parent_id)
click to toggle source
# File lib/engine2/action.rb, line 856 def validate_record handler, record, parent_id @validations.each do |name, val| unless record.errors[name] result = val.(handler, record, parent_id) record.errors.add(name, result) if result end end if @validations end