eitil 1.1.5 → 1.1.6
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/eitil_core/README.md +22 -1
- data/eitil_core/lib/eitil_core.rb +1 -0
- data/eitil_core/lib/eitil_core/active_record.rb +2 -0
- data/eitil_core/lib/eitil_core/active_record/hash_to_relation.rb +27 -0
- data/eitil_core/lib/eitil_core/application_controller.rb +1 -0
- data/eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb +27 -0
- data/eitil_core/lib/eitil_core/application_record.rb +1 -0
- data/eitil_core/lib/eitil_core/application_record/model_atts.rb +19 -0
- data/eitil_core/lib/eitil_core/railtie.rb +4 -0
- data/lib/eitil/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56c74ebd746f3df95bb5db69eea9c32c894c3a360c4f3da75d2fd5e776834800
|
4
|
+
data.tar.gz: a61655e6fab7305708443fe00918513cf42ebd04bddf9f5114b7f346edc8a347
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 247df55a479fa73e45cba14dc6dd902b8e334d7ec4f9faa4a67142015489498abbd1a17b3f08053326837e47677e1886a5e2663e3d496ae0e98ba5a20feffefc
|
7
|
+
data.tar.gz: 5844f97ccf79c3ccb7e4c9f7724fc2b9ff005e51e703477d4734b692b7180e4257fb81744a7a12ed4b292ab793fecb89f6d5f95d4f4866ddca6524ba4c57aeba
|
data/eitil_core/README.md
CHANGED
@@ -10,10 +10,26 @@ EitilCore extends the core classes of Ruby and Rails.
|
|
10
10
|
|
11
11
|
```ruby
|
12
12
|
|
13
|
-
require "eitil_core/
|
13
|
+
require "eitil_core/active_record"
|
14
14
|
|
15
15
|
```
|
16
16
|
|
17
|
+
```ruby
|
18
|
+
# require "eitil_core/active_record/hash_to_relation"
|
19
|
+
|
20
|
+
[].to_relation
|
21
|
+
# converts an array of ActiveRecord instances to an ActiveRecord_Relation instance
|
22
|
+
# call as: [#<instance1>,<instance2>].to_relation
|
23
|
+
```
|
24
|
+
|
25
|
+
## ApplicationController
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
|
29
|
+
require "eitil_core/application_controller"
|
30
|
+
require "eitil_core/application_controller/permit_model_atts"
|
31
|
+
```
|
32
|
+
|
17
33
|
```ruby
|
18
34
|
# require "eitil_core/application_controller/slice_params"
|
19
35
|
|
@@ -21,6 +37,11 @@ slice_params(*args)
|
|
21
37
|
# slices request params, converts them to JSON and symbolizes the keys
|
22
38
|
# call as: slice_params :id, :user
|
23
39
|
# => { id: 1, user: 69 }
|
40
|
+
|
41
|
+
permit_model_atts(*models, include: nil, except: nil)
|
42
|
+
# calls params.permit and automatically permits the columns of all given models (one or more)
|
43
|
+
# also accepts additional permits (include: nil) or allows you to reject column values (except: nil)
|
44
|
+
# call as: params.permit_model_atts(BillingInfo, BillingIntegration, except: :credit_card)
|
24
45
|
```
|
25
46
|
|
26
47
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/active_record/hash_to_relation"
|
3
|
+
|
4
|
+
require "eitil_core/errors/raise_error"
|
5
|
+
|
6
|
+
class Array
|
7
|
+
|
8
|
+
def to_relation
|
9
|
+
|
10
|
+
return self unless self.present?
|
11
|
+
|
12
|
+
unless self.all? { |item| item.class.ancestors.include? ApplicationRecord }
|
13
|
+
raise_error "InvalidArrayError", ".to_relation requires that all array items are model instances"
|
14
|
+
end
|
15
|
+
|
16
|
+
unless self.each_cons(2).all? { |el1, el2| el1.class == el2.class }
|
17
|
+
raise_error "InvalidArrayError", ".to_relation requires that all array items are instances of the same model"
|
18
|
+
end
|
19
|
+
|
20
|
+
_class = self.first.class
|
21
|
+
ids = self.map(&:id)
|
22
|
+
|
23
|
+
return _class.where(id: ids)
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/application_controller/permit_model_atts"
|
3
|
+
|
4
|
+
module ActionController
|
5
|
+
class Parameters
|
6
|
+
|
7
|
+
def permit_model_atts(*models, include: nil, except: nil)
|
8
|
+
|
9
|
+
models = models.is_a?(Array) ? models : [models]
|
10
|
+
except = except.is_a?(Array) ? except : [except]
|
11
|
+
include = include.is_a?(Array) ? include : [include]
|
12
|
+
|
13
|
+
columns = models.map do |model|
|
14
|
+
model.columns_hash.keys.map &:to_sym
|
15
|
+
end.flatten.uniq
|
16
|
+
|
17
|
+
default_reject = %i( id updated_at created_at )
|
18
|
+
given_reject = except.map { |key| key&.to_sym }
|
19
|
+
accepted_values = columns + include - default_reject - given_reject
|
20
|
+
|
21
|
+
return self.permit(*accepted_values)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
# require "eitil_core/application_record/model_atts"
|
3
|
+
|
4
|
+
# require "eitil_core/railtie" to run the dynamic dispatch as an init hook during boot
|
5
|
+
require "eitil_core/railtie"
|
6
|
+
|
7
|
+
module EitilCore
|
8
|
+
module ApplicationRecord
|
9
|
+
module ModelAtts
|
10
|
+
|
11
|
+
def model_atts
|
12
|
+
columns = self.columns_hash.keys.map(&:to_sym)
|
13
|
+
reject = %i( id updated_at created_at )
|
14
|
+
columns - reject
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -21,6 +21,10 @@ module EitilCore
|
|
21
21
|
::ApplicationRecord.send(:extend, EitilCore::ApplicationRecord::AllAssociations)
|
22
22
|
end
|
23
23
|
|
24
|
+
if Object.const_defined?('EitilCore::ApplicationRecord::ModelAtts')
|
25
|
+
::ApplicationRecord.send(:extend, EitilCore::ApplicationRecord::ModelAtts)
|
26
|
+
end
|
27
|
+
|
24
28
|
# ApplicationController
|
25
29
|
|
26
30
|
if Object.const_defined?('EitilCore::ApplicationController::SliceParams')
|
data/lib/eitil/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eitil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jurriaan Schrofer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -82,11 +82,15 @@ files:
|
|
82
82
|
- Rakefile
|
83
83
|
- eitil_core/README.md
|
84
84
|
- eitil_core/lib/eitil_core.rb
|
85
|
+
- eitil_core/lib/eitil_core/active_record.rb
|
86
|
+
- eitil_core/lib/eitil_core/active_record/hash_to_relation.rb
|
85
87
|
- eitil_core/lib/eitil_core/application_controller.rb
|
88
|
+
- eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
|
86
89
|
- eitil_core/lib/eitil_core/application_controller/slice_params.rb
|
87
90
|
- eitil_core/lib/eitil_core/application_record.rb
|
88
91
|
- eitil_core/lib/eitil_core/application_record/all_associations.rb
|
89
92
|
- eitil_core/lib/eitil_core/application_record/find_by_like.rb
|
93
|
+
- eitil_core/lib/eitil_core/application_record/model_atts.rb
|
90
94
|
- eitil_core/lib/eitil_core/application_record/where_like.rb
|
91
95
|
- eitil_core/lib/eitil_core/argument_helpers.rb
|
92
96
|
- eitil_core/lib/eitil_core/argument_helpers/all_args_to_ivars.rb
|