Class: Shiboru::Registry
- Inherits:
-
Object
- Object
- Shiboru::Registry
- Defined in:
- lib/shiboru/registry.rb
Overview
Usage:
Shiboru::Registry.for_model(User) # => UserFilter (if UserFilter exists)
Shiboru::Registry.for_model(Post) # => PostFilter (if PostFilter exists)
Shiboru::Registry.for_model(Admin::User) # => Admin::UserFilter (if it exists)
Shiboru::Registry.for_model(NonExistentModel) # => nil (if NonExistentModelFilter doesn't exist)
Class Method Summary collapse
-
.for_model(klass) ⇒ Class?
Given a model class, find its corresponding FilterSet class.
Class Method Details
.for_model(klass) ⇒ Class?
Given a model class, find its corresponding FilterSet class. Automatically maps model names to filter class names by appending “Filter”. Results are cached to improve performance on subsequent calls.
Examples:
User -> UserFilter
Profiles::User -> Profiles::UserFilter
24 25 26 27 28 29 30 |
# File 'lib/shiboru/registry.rb', line 24 def for_model(klass) return @cache[klass] if @cache.key?(klass) filter_const_name = "#{klass.name}Filter" filter_klass = constantize_safe(filter_const_name) @cache[klass] = filter_klass end |