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