Resolves loan rules with proper precedence:
- Node-level rules (if override_loan_rules is true)
- Member type rules
- System defaults
This allows flexible policy management across different branches/nodes while maintaining member type-based rules as the foundation.
Summary
Functions
Checks node-specific operational policies.
Calculates fine amount based on resolved rules.
Checks if a specific operation is allowed based on node and member type rules.
Returns a human-readable explanation of which rules are being applied.
Resolves the effective loan rules for a given node and member type.
Returns system defaults for reference.
Functions
Checks node-specific operational policies.
Calculates fine amount based on resolved rules.
Checks if a specific operation is allowed based on node and member type rules.
Examples
can_perform?(node, member_type, :reserve)
# => true | false
can_perform?(node, member_type, :renew)
# => true | false
Returns a human-readable explanation of which rules are being applied.
Resolves the effective loan rules for a given node and member type.
Examples
# Node overrides member type
resolve_rules(node_with_override, member_type)
# => %{max_items: 10, source: :node, ...}
# Member type rules apply
resolve_rules(node_without_override, member_type)
# => %{max_items: 5, source: :member_type, ...}
# Falls back to defaults
resolve_rules(nil, nil)
# => %{max_items: 3, source: :system_default, ...}
Returns system defaults for reference.