Custom Filter Method
Overviewâ
We can add a custom filter method to filter records based on specific criteria. This is useful when the default filtering options do not meet the requirements. The custom filter method can be defined using the filter_with option.
Usageâ
The custom filter method is implemented using the filter dsl_method with the filter_with option. Below are the key elements and their usage:
Syntaxâ
filter :filter_name, :filter_type, filter_with: :custom_filter_method
Exampleâ
1. For Search and Select:
Define the custom filter method in your model:
class YourModel < ApplicationRecord
scope :custom_filter_method, ->(value) { where('column_name LIKE ?', "%#{value}%") }
end
Use the custom filter method in your cm admin:
filter :filter_name, :search, filter_with: :custom_filter_method
filter :filter_name, :single_select, helper_method: :options_for_select, filter_with: :custom_filter_method
2. For Date and Range:
Define the custom filter method in your model:
class YourModel < ApplicationRecord
scope :custom_filter_method, ->(from, to) { where('column_name BETWEEN ? AND ?', from, to) }
end
Use the custom filter method in your cm admin:
filter :filter_name, :date, filter_with: :custom_filter_method