adaptive_alias 1.0.0 → 1.1.0

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: f5938ea6d66ddde37c2f28e252297844a422d3431b37105c54b2246244880971
4
- data.tar.gz: ad5e44e57886b67db5eaacc898a910b5b916d194e8eca3ad821851f9b9c4a35e
3
+ metadata.gz: 2fe3d8361642cc73cba568a7a131efa94f9e17eeada3f1af45990ff876abcb6d
4
+ data.tar.gz: befec070dac8af388634e02f5479a78d61ca4e7ddd10e7a489aeae2e2e7180e8
5
5
  SHA512:
6
- metadata.gz: 2ed9da0a54fea620f1d31ebb8c6c15b11591eb5b34d96e21f699dd1c3c0acb64a9415ca224388688b8f6af1871f775b197a4876bf54e4abd24a59ec6ec154922
7
- data.tar.gz: bcc8815527922cfb226c7ea8c718f25ed9d2f8cd029b0666ec567c9a2fb2ce3414596cbfc39e146d817be7ee8b2f36dfa6a304267ad60cb903ac3dc54706321e
6
+ metadata.gz: 2c676366d3132428d290da9291e886f06620d07836a56b87bb59d82f4dc84b86e8ba73f317a26b126d01bb4011a86c04d5653476c277b49d2f81d3728be5e973
7
+ data.tar.gz: d26cc5ad6eb77b9cba338788eafcb9f3826b7dbe4cc4afbf1dfd8e22f32bf626be7294bfd87f007e60db429f7294127f994eb4d402c9699cde83017b0b38b540
data/CHANGELOG.md CHANGED
@@ -1,7 +1,12 @@
1
1
  ## Change Log
2
2
 
3
+ ### [v1.0.0](https://github.com/khiav223577/adaptive_alias/compare/v0.2.4...v1.0.0) 2022/09/22
4
+ - [#21](https://github.com/khiav223577/adaptive_alias/pull/21) [Fix] Model with ignored_columns or calling find_by directly on model class with aliased column argument will fail (@khiav223577)
5
+ - [#20](https://github.com/khiav223577/adaptive_alias/pull/20) [Fix] Problems with STI classes and models that uses same table name (@khiav223577)
6
+ - [#19](https://github.com/khiav223577/adaptive_alias/pull/19) [Fix] Rescue the error when doing direct access to target table's field (@khiav223577)
7
+
3
8
  ### [v0.2.4](https://github.com/khiav223577/adaptive_alias/compare/v0.2.3...v0.2.4) 2022/08/18
4
- - [#18](https://github.com/khiav223577/adaptive_alias/pull/18) [Fix] get model from a relation with join will not generate right query (after migration) (@khiav223577)
9
+ - [#18](https://github.com/khiav223577/adaptive_alias/pull/18) [Fix] Get model from a relation with join will not generate right query (after migration) (@khiav223577)
5
10
 
6
11
  ### [v0.2.3](https://github.com/khiav223577/adaptive_alias/compare/v0.2.2...v0.2.3) 2022/08/17
7
12
  - [#17](https://github.com/khiav223577/adaptive_alias/pull/17) [Feature] Support joins (@khiav223577)
@@ -2,11 +2,11 @@ module AdaptiveAlias
2
2
  module Hooks
3
3
  module ActiveRecordCore
4
4
  def find(*)
5
- AdaptiveAlias.rescue_statement_invalid(nil, nil){ super }
5
+ AdaptiveAlias.rescue_statement_invalid{ super }
6
6
  end
7
7
 
8
8
  def find_by(*)
9
- AdaptiveAlias.rescue_statement_invalid(nil, nil){ super }
9
+ AdaptiveAlias.rescue_statement_invalid{ super }
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,14 @@
1
+ module AdaptiveAlias
2
+ module Hooks
3
+ module ActiveRecordPersistence
4
+ def _create_record(*)
5
+ AdaptiveAlias.rescue_statement_invalid(model: self){ super }
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ # Nested module include is not supported until ruby 3.0
12
+ class ActiveRecord::Base
13
+ prepend AdaptiveAlias::Hooks::ActiveRecordPersistence
14
+ end
@@ -2,11 +2,7 @@ module AdaptiveAlias
2
2
  module Hooks
3
3
  module Association
4
4
  def find_target(*)
5
- AdaptiveAlias.rescue_statement_invalid(nil, reflection){ super }
6
- end
7
-
8
- def create!(attributes = {}, &block)
9
- AdaptiveAlias.rescue_statement_invalid(association_scope, reflection){ super }
5
+ AdaptiveAlias.rescue_statement_invalid(reflection: reflection){ super }
10
6
  end
11
7
  end
12
8
  end
@@ -2,15 +2,15 @@ module AdaptiveAlias
2
2
  module Hooks
3
3
  module Relation
4
4
  def pluck(*)
5
- AdaptiveAlias.rescue_statement_invalid(self, nil){ super }
5
+ AdaptiveAlias.rescue_statement_invalid(relation: self){ super }
6
6
  end
7
7
 
8
8
  def select_all(*)
9
- AdaptiveAlias.rescue_statement_invalid(self, nil){ super }
9
+ AdaptiveAlias.rescue_statement_invalid(relation: self){ super }
10
10
  end
11
11
 
12
12
  def exec_queries(*)
13
- AdaptiveAlias.rescue_statement_invalid(self, nil){ super }
13
+ AdaptiveAlias.rescue_statement_invalid(relation: self){ super }
14
14
  end
15
15
  end
16
16
  end
@@ -84,7 +84,7 @@ module AdaptiveAlias
84
84
  end
85
85
  end
86
86
 
87
- @fix_association = proc do |relation, reflection, error|
87
+ @fix_association = proc do |relation, reflection, model, error|
88
88
  next false if not patch.removable
89
89
  next false if patch.removed
90
90
 
@@ -93,12 +93,21 @@ module AdaptiveAlias
93
93
  if ambiguous
94
94
  next false if relation and klass.table_name != relation.klass.table_name
95
95
  next false if reflection and klass.table_name != reflection.klass.table_name
96
+ next false if model and klass.table_name != model.class.table_name
97
+ next false if !relation and !reflection and !model
96
98
  end
97
99
 
98
100
  next false if not expected_association_err_msgs.include?(error.message) and not ambiguous
99
101
 
100
102
  patch.remove!
101
103
 
104
+ if model
105
+ attributes = model.instance_variable_get(:@attributes).instance_variable_get(:@attributes)
106
+ attributes.transform_keys! do |key|
107
+ key == current_column.to_s ? alias_column.to_s : key
108
+ end
109
+ end
110
+
102
111
  if relation
103
112
  relation.reset # reset @arel
104
113
 
@@ -1,3 +1,3 @@
1
1
  module AdaptiveAlias
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -14,6 +14,7 @@ require 'adaptive_alias/hooks/association_scope'
14
14
  require 'adaptive_alias/hooks/singular_association'
15
15
  require 'adaptive_alias/hooks/relation'
16
16
  require 'adaptive_alias/hooks/active_record_core'
17
+ require 'adaptive_alias/hooks/active_record_persistence'
17
18
 
18
19
  module AdaptiveAlias
19
20
  @log_interval = 10 * 60
@@ -42,12 +43,12 @@ module AdaptiveAlias
42
43
  end
43
44
  end
44
45
 
45
- def rescue_statement_invalid(relation, reflection, &block)
46
+ def rescue_statement_invalid(relation: nil, reflection: nil, model: nil, &block)
46
47
  yield
47
48
  rescue ActiveRecord::StatementInvalid => error
48
- raise error if AdaptiveAlias.current_patches.all?{|_key, patch| !patch.fix_association.call(relation, reflection, error) }
49
+ raise error if AdaptiveAlias.current_patches.all?{|_key, patch| !patch.fix_association.call(relation, reflection, model, error) }
49
50
 
50
- result = rescue_statement_invalid(relation, reflection, &block)
51
+ result = rescue_statement_invalid(relation: relation, reflection: reflection, model: model, &block)
51
52
  AdaptiveAlias.current_patches.each_value(&:mark_removable)
52
53
  return result
53
54
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adaptive_alias
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - khiav reoy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-22 00:00:00.000000000 Z
11
+ date: 2022-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -129,6 +129,7 @@ files:
129
129
  - lib/adaptive_alias/active_model_patches/remove_alias_attribute.rb
130
130
  - lib/adaptive_alias/active_model_patches/write_attribute.rb
131
131
  - lib/adaptive_alias/hooks/active_record_core.rb
132
+ - lib/adaptive_alias/hooks/active_record_persistence.rb
132
133
  - lib/adaptive_alias/hooks/association.rb
133
134
  - lib/adaptive_alias/hooks/association_scope.rb
134
135
  - lib/adaptive_alias/hooks/relation.rb