app/models/effective/effective_datatable/resource.rb in effective_datatables-4.13.5 vs app/models/effective/effective_datatable/resource.rb in effective_datatables-4.14.0
- old
+ new
@@ -156,11 +156,10 @@
end
end
def load_resource_search!
columns.each do |name, opts|
-
case opts[:search]
when false
opts[:search] = { as: :null }; next
when Symbol
opts[:search] = { as: opts[:search] }
@@ -174,17 +173,16 @@
search = opts[:search]
# Parameterize collection
if search[:collection].kind_of?(ActiveRecord::Relation)
- search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.to_param] }
+ search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.id] }
elsif search[:collection].kind_of?(Array) && search[:collection].first.kind_of?(ActiveRecord::Base)
- search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.to_param] }
+ search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.id] }
end
search[:as] ||= :select if search.key?(:collection)
- search[:fuzzy] ||= true unless search.key?(:fuzzy)
search[:value] ||= search.delete(:selected) if search.key?(:selected)
# Merge with defaults
search_resource = [opts[:resource], effective_resource, fallback_effective_resource].compact
search_resource = search_resource.find { |res| res.klass.present? } || search_resource.first
@@ -192,9 +190,15 @@
if array_collection? && opts[:resource].present?
search.reverse_merge!(search_resource.search_form_field(name, collection.first[opts[:index]]))
elsif search[:as] != :string
search.reverse_merge!(search_resource.search_form_field(name, opts[:as]))
end
+
+ # Assign default search operation
+ search[:operation] ||= search.delete(:op)
+ search[:operation] ||= :eq if search[:as] == :select
+ search[:operation] ||= :matches if search[:fuzzy]
+ search[:operation] ||= search_resource.sql_operation(name, as: opts[:as])
# Assign default include_null
if search[:as] == :select && !search.key?(:include_null)
search[:include_null] = true
end