67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/puffer/filters.rb', line 67
def controller_filters controller
scope = "#{controller}Filters".split('::')[0..-2].join('::').constantize rescue Kernel
name = "#{controller}Filters".demodulize
if scope.const_defined?(name)
scope.const_get(name)
else
attributes_from_controller = controller.index_fields.reduce({}) do |res, field|
res[field.field_name] = nil
res
end
attributes_from_controller.merge!('puffer_search' => nil, 'puffer_order' => nil)
klass = Class.new(self)
attributes_from_controller.keys.each do |name|
klass.send :define_method, name do
read_attribute name
end
klass.send :define_method, "#{name}=" do |value|
write_attribute name, value
end
end
klass.send :define_method, :attributes do
attributes_from_controller
end
scope.const_set(name, klass)
end
end
|