effective_resources 1.3.14 → 1.3.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/effective/resources/relation.rb +15 -5
- data/lib/effective_resources/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9401a04b558eb6438c84b7a4fefe259d37fc3deecf022aa95729a18fdc24511
|
4
|
+
data.tar.gz: 137da931f63327136a49d05ad14de51cd1b70f7d0878dc530978f9778d79da7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4da7d55ebb3f63dff8f64a549cd6fc90331dcbf7e41b37c19dcf780390efd10e62f15db71175514e30344d60d448d3b9943bcfb165769ecfc4eb7d98c1976c08
|
7
|
+
data.tar.gz: 1301f38268a74ae5a159c0a63fa8af7f5b4ace3a157d10a45ebcf46abcec25eb0709519354a28394e2355b0507ba47c5ef5ffc7c22ce4062c70044a55151c040
|
@@ -27,7 +27,6 @@ module Effective
|
|
27
27
|
case sql_type
|
28
28
|
when :belongs_to
|
29
29
|
relation
|
30
|
-
.order(Arel.sql("#{is_null(sql_column)} ASC"))
|
31
30
|
.order(order_by_associated_conditions(association, sort: sort, direction: direction, limit: limit))
|
32
31
|
when :belongs_to_polymorphic
|
33
32
|
relation
|
@@ -71,13 +70,17 @@ module Effective
|
|
71
70
|
term = Effective::Attribute.new(sql_type, klass: (association.try(:klass) rescue nil) || klass).parse(value, name: name)
|
72
71
|
|
73
72
|
# term == 'nil' rescue false is a Rails 4.1 fix, where you can't compare a TimeWithZone to 'nil'
|
74
|
-
if (term == 'nil' rescue false) && ![:has_and_belongs_to_many, :has_many, :has_one, :belongs_to_polymorphic, :effective_roles].include?(sql_type)
|
73
|
+
if (term == 'nil' rescue false) && ![:has_and_belongs_to_many, :has_many, :has_one, :belongs_to, :belongs_to_polymorphic, :effective_roles].include?(sql_type)
|
75
74
|
return relation.where(is_null(sql_column))
|
76
75
|
end
|
77
76
|
|
78
77
|
case sql_type
|
79
|
-
when :belongs_to
|
80
|
-
|
78
|
+
when :belongs_to
|
79
|
+
if term == 'nil'
|
80
|
+
relation.where(is_null(association.foreign_key))
|
81
|
+
else
|
82
|
+
relation.where(search_by_associated_conditions(association, term, fuzzy: fuzzy))
|
83
|
+
end
|
81
84
|
when :belongs_to_polymorphic
|
82
85
|
(type, id) = term.split('_')
|
83
86
|
|
@@ -89,6 +92,8 @@ module Effective
|
|
89
92
|
id ||= Effective::Attribute.new(:integer).parse(term)
|
90
93
|
relation.where("#{sql_column}_id = ? OR #{sql_column}_type = ?", id, (type || term))
|
91
94
|
end
|
95
|
+
when :has_and_belongs_to_many, :has_many, :has_one
|
96
|
+
relation.where(search_by_associated_conditions(association, term, fuzzy: fuzzy))
|
92
97
|
when :effective_addresses
|
93
98
|
relation.where(id: Effective::Resource.new(association).search_any(value, fuzzy: fuzzy).pluck(:addressable_id))
|
94
99
|
when :effective_obfuscation
|
@@ -160,6 +165,11 @@ module Effective
|
|
160
165
|
return relation.where(klass.primary_key => value)
|
161
166
|
end
|
162
167
|
|
168
|
+
# If the value is 3-something-like-this
|
169
|
+
if (values = value.to_s.split('-')).length > 0 && (maybe_id = values.first).present?
|
170
|
+
return relation.where(klass.primary_key => maybe_id) if (maybe_id.to_i.to_s == maybe_id)
|
171
|
+
end
|
172
|
+
|
163
173
|
# Otherwise, we fall back to a string/text search of all columns
|
164
174
|
columns = Array(columns || search_columns)
|
165
175
|
fuzzy = true unless fuzzy == false
|
@@ -298,7 +308,7 @@ module Effective
|
|
298
308
|
end
|
299
309
|
|
300
310
|
def order_by_array_position(keys, field)
|
301
|
-
keys = Array(keys).uniq.compact
|
311
|
+
keys = Array(keys).uniq.compact.presence || [0]
|
302
312
|
|
303
313
|
if postgres?
|
304
314
|
Arel.sql("array_position(ARRAY[#{keys.first(TARGET_KEYS_LIMIT).join(',')}]::text::int[], #{field}::int)")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|