Class: CustomActiveRecordObserver::Schema
- Inherits:
-
Object
- Object
- CustomActiveRecordObserver::Schema
- Defined in:
- lib/custom_active_record_observer/schema.rb
Instance Attribute Summary collapse
-
#schema ⇒ Object
readonly
Returns the value of attribute schema.
Instance Method Summary collapse
- #add_rule(class_name, action, rules, handler) ⇒ Object
- #classes ⇒ Object
- #get_rules(class_name, action, raw_changes = {}) ⇒ Object
-
#initialize(schema = {}) ⇒ Schema
constructor
{ ‘User’ => { update: [[rule_1, handler], [rule_2, handler]], create: [[rule_3, handler]] } ‘Article’ => { destroy: [[rule5, handler]], } }.
Constructor Details
#initialize(schema = {}) ⇒ Schema
{
'User' =>
{
update: [[rule_1, handler], [rule_2, handler]],
create: [[rule_3, handler]]
}
'Article' =>
{
destroy: [[rule5, handler]],
}
}
18 19 20 |
# File 'lib/custom_active_record_observer/schema.rb', line 18 def initialize(schema = {}) @schema = schema end |
Instance Attribute Details
#schema ⇒ Object (readonly)
Returns the value of attribute schema.
3 4 5 |
# File 'lib/custom_active_record_observer/schema.rb', line 3 def schema @schema end |
Instance Method Details
#add_rule(class_name, action, rules, handler) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/custom_active_record_observer/schema.rb', line 22 def add_rule(class_name, action, rules, handler) unless class_name.is_a?(Symbol) class_name = class_name.to_s.to_sym end schema[class_name] ||= {} schema[class_name][action] ||= [] Array(rules).each do |rule| schema[class_name][action] << [rule, handler] end end |
#classes ⇒ Object
44 45 46 |
# File 'lib/custom_active_record_observer/schema.rb', line 44 def classes schema.keys.map { |name| name.to_s.constantize } end |
#get_rules(class_name, action, raw_changes = {}) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/custom_active_record_observer/schema.rb', line 35 def get_rules(class_name, action, raw_changes = {}) changes = raw_changes.symbolize_keys schema.fetch(class_name.to_sym, {}). fetch(action, []).select do |(rule, handler)| rule.allowed?(changes) end end |