@@ -17,7 +17,7 @@ def initialize(grid_class, name, options = {}, &block)
17
17
self . grid_class = grid_class
18
18
self . name = name . to_sym
19
19
self . options = options
20
- self . block = block || default_filter_block
20
+ self . block = block
21
21
end
22
22
23
23
def parse ( value )
@@ -39,7 +39,7 @@ def apply(grid_object, scope, value)
39
39
40
40
return scope unless result
41
41
42
- result = default_filter ( value , scope , grid_object ) if result == Datagrid ::Filters ::DEFAULT_FILTER_BLOCK
42
+ result = default_filter ( value , scope ) if result == Datagrid ::Filters ::DEFAULT_FILTER_BLOCK
43
43
unless grid_object . driver . match? ( result )
44
44
raise (
45
45
Datagrid ::FilteringError ,
@@ -116,13 +116,6 @@ def self.form_builder_helper_name
116
116
:"datagrid_#{ to_s . demodulize . underscore } "
117
117
end
118
118
119
- def default_filter_block
120
- filter = self
121
- lambda do |value , scope , grid |
122
- filter . default_filter ( value , scope , grid )
123
- end
124
- end
125
-
126
119
def supports_range?
127
120
self . class . ancestors . include? ( ::Datagrid ::Filters ::RangedFilter )
128
121
end
@@ -150,17 +143,23 @@ def enum_checkboxes?
150
143
false
151
144
end
152
145
146
+ def default_scope?
147
+ !block
148
+ end
149
+
153
150
protected
154
151
155
152
def default_filter_where ( scope , value )
156
153
driver . where ( scope , name , value )
157
154
end
158
155
159
156
def execute ( value , scope , grid_object )
160
- if block . arity == 1
157
+ if block & .arity == 1
161
158
scope . instance_exec ( value , &block )
162
- else
159
+ elsif block
163
160
Datagrid ::Utils . apply_args ( value , scope , grid_object , &block )
161
+ else
162
+ default_filter ( value , scope )
164
163
end
165
164
end
166
165
@@ -185,7 +184,7 @@ def driver
185
184
grid_class . driver
186
185
end
187
186
188
- def default_filter ( value , scope , _grid )
187
+ def default_filter ( value , scope )
189
188
return nil if dummy?
190
189
191
190
if !driver . scope_has_column? ( scope , name ) && scope . respond_to? ( name , true )
0 commit comments