effective_resources 1.1.0 → 1.1.1

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
  SHA1:
3
- metadata.gz: 962a290756ff82a2d328b486f9d381cb7f97568b
4
- data.tar.gz: 3059d2ba54c29292b5b704ca2fde4b40feaf3969
3
+ metadata.gz: 31a59a4d537c8d4f363e2a5bb86758f2d0ad2b01
4
+ data.tar.gz: 9ce2460bcb27b1afe0d204f9d3528c6e92cbc6a5
5
5
  SHA512:
6
- metadata.gz: c87bbabac3cc1e732d1e673a0462068ba9b13623c5e4ed3418c5b51443684063ac8217c2e15238136c0d2d7c6c2a132319b16ac9a7e4eec9112269b0a0a36b59
7
- data.tar.gz: 4a1cf91f0d0cf9d593658df108f80831f4fee7ff5d30af83a113f4b637dd779879b81add4869525cfed905822db94d666e4067bf56d95837fab5e9cb8d643a20
6
+ metadata.gz: 33394fcfcde825f6383a5d74a19ae2349ab2d94e7bcff15e9f9ac80fdaa4ae583636b5424982695d3384283eddb538f9ce02df93f06b94a72105ee532badfa59
7
+ data.tar.gz: 1efe1addab462d093e0e25f52a5d08a90299ff8a48c5402a192fa9acb5317aa5bcd49d8d360365992bc081af3037286a66bea9694b0c5ba0b2cf80a2ae15b015
@@ -26,7 +26,7 @@ module Effective
26
26
 
27
27
  def has_ones
28
28
  return [] unless klass.respond_to?(:reflect_on_all_associations)
29
- klass.reflect_on_all_associations(:has_one)
29
+ klass.reflect_on_all_associations(:has_one).reject { |ass| ass.class_name.to_s.start_with?('ActiveStorage::') }
30
30
  end
31
31
 
32
32
  def has_ones_ids
@@ -35,7 +35,7 @@ module Effective
35
35
 
36
36
  def has_manys
37
37
  return [] unless klass.respond_to?(:reflect_on_all_associations)
38
- klass.reflect_on_all_associations(:has_many).reject { |ass| ass.options[:autosave] }
38
+ klass.reflect_on_all_associations(:has_many).reject { |ass| ass.options[:autosave] || ass.class_name.to_s.start_with?('ActiveStorage::') }
39
39
  end
40
40
 
41
41
  def has_and_belongs_to_manys
@@ -43,6 +43,24 @@ module Effective
43
43
  klass.reflect_on_all_associations(:has_and_belongs_to_many)
44
44
  end
45
45
 
46
+ def active_storage_has_manys
47
+ return [] unless klass.respond_to?(:reflect_on_all_associations)
48
+ klass.reflect_on_all_associations(:has_many).select { |ass| ass.class_name == 'ActiveStorage::Attachment' }
49
+ end
50
+
51
+ def active_storage_has_manys_ids
52
+ active_storage_has_manys.map { |ass| ass.name.to_s.gsub(/_attachments\z/, '').to_sym }
53
+ end
54
+
55
+ def active_storage_has_ones
56
+ return [] unless klass.respond_to?(:reflect_on_all_associations)
57
+ klass.reflect_on_all_associations(:has_one).select { |ass| ass.class_name == 'ActiveStorage::Attachment' }
58
+ end
59
+
60
+ def active_storage_has_ones_ids
61
+ active_storage_has_ones.map { |ass| ass.name.to_s.gsub(/_attachment\z/, '').to_sym }
62
+ end
63
+
46
64
  def nested_resources
47
65
  return [] unless klass.respond_to?(:reflect_on_all_associations)
48
66
  klass.reflect_on_all_associations(:has_many).select { |ass| ass.options[:autosave] } +
@@ -45,6 +45,13 @@ module Effective
45
45
  { effective_assets: [:effective_assets] }
46
46
  end
47
47
 
48
+ def active_storage_attributes
49
+ {}.tap do |retval|
50
+ active_storage_has_ones_ids.each { |k, v| retval[k] = [:string] }
51
+ active_storage_has_manys_ids.each { |k, v| retval[k] = [:array] }
52
+ end
53
+ end
54
+
48
55
  # All will include primary_key, created_at, updated_at and belongs_tos
49
56
  # This is the attributes as defined by the effective_resources do .. end block
50
57
  # { :name => [:string, { permitted: false }], ... }
@@ -58,6 +65,7 @@ module Effective
58
65
  .merge(has_ones_attributes)
59
66
  .merge(effective_addresses_attributes)
60
67
  .merge(effective_assets_attributes)
68
+ .merge(active_storage_attributes)
61
69
  .merge(atts)
62
70
  else # This is the migrator. This should match table_attributes
63
71
  belong_tos_attributes.merge(atts.reject { |_, v| v[0] == :permitted_param })
@@ -81,19 +89,12 @@ module Effective
81
89
 
82
90
  # Used by effective_crud_controller to generate the permitted params
83
91
  def permitted_attributes
84
- # id = {klass.primary_key.to_sym => [:integer]}
85
- # bts = belong_tos_ids.inject({}) { |h, ass| h[ass] = [:integer]; h }
86
- # has_manys = has_manys_ids.inject({}) { |h, ass| h[ass] = [:array]; h }
87
- # has_manys.each { |k, _| has_manys[k] = model_attributes[k] if model_attributes.key?(k) }
88
- # Does not include nested, as they are added recursively elsewhere
89
- # id.merge(bts).merge(model_attributes).merge(has_manys)
90
-
91
92
  model_attributes(all: true)
92
93
  end
93
94
 
94
95
  # All attributes from the klass, sorted as per model attributes block.
95
96
  # Does not include :id, :created_at, :updated_at unless all is passed
96
- def klass_attributes(all: false)
97
+ def klass_attributes(all: false, sort: false)
97
98
  attributes = (klass.new().attributes rescue nil)
98
99
  return [] unless attributes
99
100
 
@@ -108,7 +109,7 @@ module Effective
108
109
  end; h
109
110
  end
110
111
 
111
- sort_by_model_attributes(attributes)
112
+ sort ? sort_by_model_attributes(attributes) : attributes
112
113
  end
113
114
 
114
115
  private
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '1.1.0'.freeze
2
+ VERSION = '1.1.1'.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.1.0
4
+ version: 1.1.1
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: 2018-12-15 00:00:00.000000000 Z
11
+ date: 2018-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails