effective_resources 1.4.6 → 1.4.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c4f700e19057fb28260220750481c0e31de2b9800b3620b4ec480deaf15814c
4
- data.tar.gz: 2004bea3ba5a18301aef5fa315c35b6f3c3421559f9263734ca04c0e73587f0b
3
+ metadata.gz: 97764ee0170d441cf4e7c5f1c19dfd934725a44ef8989a62c3ea0489c964f9f5
4
+ data.tar.gz: b0ad99c6f0ec0ed3646749acba55682d6598dc03ab6fad18afaa7b86a992f97f
5
5
  SHA512:
6
- metadata.gz: 1fa70e959c9286c9334765cce3f4070adcfbda17a749ae664c121819482fb22c14451dfa82a192979e74f166c2261e21e77e755e7ba1d4aa93b67f612a2022a7
7
- data.tar.gz: 747e552fc23f61ff06467ab36cec1f67a8cb92e46859c3a7271036d7a6be0e8aa51dc1a4a30871c1ad62122841cd2ebdf84009eff1a1ab8f1246f228d2eda330
6
+ metadata.gz: 7f9cb800b96d5e537f9ed9a015daa19f0a12626855d1f68aad9c845befbb2fc4ad8bbcaacac5ebbed4c384a3b603ee359308a423b3ff27080a0fcf4dc17180d1
7
+ data.tar.gz: fa827846f103b4c1113e74670898d79e586cb4c624d58ee0339c28c023456a2be3a3fe5554d47769d6f483b1ad4fbe4b2f6a009b3e097e8c1efaa1ae3ec1af9a
@@ -60,6 +60,7 @@ module Effective
60
60
  when :effective_addresses ; :effective_addresses
61
61
  when :effective_obfuscation ; :effective_obfuscation
62
62
  when :effective_roles ; :effective_roles
63
+ when :active_storage ; :active_storage
63
64
  else
64
65
  raise "unsupported type for #{obj}"
65
66
  end
@@ -137,6 +138,8 @@ module Effective
137
138
  value.to_s
138
139
  end
139
140
  end
141
+ when :active_storage
142
+ value.to_s
140
143
  else
141
144
  raise "unsupported type #{type}"
142
145
  end
@@ -43,6 +43,11 @@ module Effective
43
43
  klass.reflect_on_all_associations(:has_and_belongs_to_many)
44
44
  end
45
45
 
46
+ def active_storages
47
+ return [] unless klass.respond_to?(:reflect_on_all_associations)
48
+ klass.reflect_on_all_associations.select { |ass| ass.class_name == 'ActiveStorage::Attachment' }
49
+ end
50
+
46
51
  def active_storage_has_manys
47
52
  return [] unless klass.respond_to?(:reflect_on_all_associations)
48
53
  klass.reflect_on_all_associations(:has_many).select { |ass| ass.class_name == 'ActiveStorage::Attachment' }
@@ -118,6 +123,11 @@ module Effective
118
123
  Effective::Address.where(category: category).where(addressable_type: class_name)
119
124
  end
120
125
 
126
+ def active_storage(name)
127
+ name = name.to_sym
128
+ active_storages.find { |ass| ass.name.to_s.gsub(/_attachment(s?)\z/, '').to_sym == name }
129
+ end
130
+
121
131
  def nested_resource(name)
122
132
  name = name.to_sym
123
133
  nested_resources.find { |ass| ass.name == name }
@@ -40,6 +40,9 @@ module Effective
40
40
  relation
41
41
  .order(order_by_associated_conditions(associated(:addresses), sort: sort, direction: direction, limit: limit))
42
42
  .order(Arel.sql("#{sql_column(klass.primary_key)} #{sql_direction}"))
43
+ when :active_storage
44
+ relation.send("with_attached_#{name}").references("#{name}_attachment")
45
+ .order(Arel.sql("active_storage_blobs.filename #{sql_direction}"))
43
46
  when :effective_roles
44
47
  relation.order(Arel.sql("#{sql_column(:roles_mask)} #{sql_direction}"))
45
48
  when :string, :text
@@ -101,6 +104,9 @@ module Effective
101
104
  relation.where("#{sql_column} = ?", (value == term ? 0 : term))
102
105
  when :effective_roles
103
106
  relation.with_role(term)
107
+ when :active_storage
108
+ relation.send("with_attached_#{name}").references("#{name}_attachment")
109
+ .where(ActiveStorage::Blob.arel_table[:filename].matches("%#{term}%"))
104
110
  when :boolean
105
111
  relation.where("#{sql_column} = ?", term)
106
112
  when :datetime, :date
@@ -52,6 +52,8 @@ module Effective
52
52
  :belongs_to_polymorphic
53
53
  elsif has_and_belongs_to_many(name)
54
54
  :has_and_belongs_to_many
55
+ elsif active_storage(name)
56
+ :active_storage
55
57
  elsif name == 'id' && defined?(EffectiveObfuscation) && klass.respond_to?(:deobfuscate)
56
58
  :effective_obfuscation
57
59
  elsif name == 'roles' && defined?(EffectiveRoles) && klass.respond_to?(:with_role)
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '1.4.6'.freeze
2
+ VERSION = '1.4.7'.freeze
3
3
  end
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.4.6
4
+ version: 1.4.7
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: 2020-03-19 00:00:00.000000000 Z
11
+ date: 2020-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails