mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-26 00:29:40 +02:00
44 lines
618 B
Ruby
44 lines
618 B
Ruby
|
class Rule::ActionExecutor
|
||
|
TYPES = [ "select", "function" ]
|
||
|
|
||
|
def initialize(rule)
|
||
|
@rule = rule
|
||
|
end
|
||
|
|
||
|
def key
|
||
|
self.class.name.demodulize.underscore
|
||
|
end
|
||
|
|
||
|
def label
|
||
|
key.humanize
|
||
|
end
|
||
|
|
||
|
def type
|
||
|
"function"
|
||
|
end
|
||
|
|
||
|
def options
|
||
|
nil
|
||
|
end
|
||
|
|
||
|
def execute(scope, value: nil, ignore_attribute_locks: false)
|
||
|
raise NotImplementedError, "Action executor #{self.class.name} must implement #execute"
|
||
|
end
|
||
|
|
||
|
def as_json
|
||
|
{
|
||
|
type: type,
|
||
|
key: key,
|
||
|
label: label,
|
||
|
options: options
|
||
|
}
|
||
|
end
|
||
|
|
||
|
private
|
||
|
attr_reader :rule
|
||
|
|
||
|
def family
|
||
|
rule.family
|
||
|
end
|
||
|
end
|