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