from_clause_translate 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6ac9ca27dca45dbc09d3d608dac3a1340049c9546aa7220b9c5b9534e07cf81
4
- data.tar.gz: 5950ea8aa2866a6ce0797e4e18f3f6238fb5eec5ffe5dae3070180252054ac1e
3
+ metadata.gz: 89031b3fa713ad97c38aab959420f0c67544ceae17455030e176025c1f13d87e
4
+ data.tar.gz: c647f38f0dbd253869f34b0aa15469b93ac4b6e833c20cc46a6d1f37dd4d4508
5
5
  SHA512:
6
- metadata.gz: 54cf51b5ab64cbcfd29f3f3332f6602807507241bf66cc4a4929ec5c58e2dac87429a0c2ae7bb2e93ccb5b6579965a6f29347a8b14715e2d766b0e8dac547dae
7
- data.tar.gz: 6cc386cb20b3d1275b97d68aec59d4da6c21568eb09cd69cc27126b588e5b9e06542347335f24447cfb491953c819c255201784214dbf01310b38052b62e4629
6
+ metadata.gz: 5c47f449400389d4057665063c21befc1a9520d0a329c4efafd975ca939848fc5aaaa0ad3f0b6e1586f3e5d309288bfad721052b76c6f71d8ad6dd3b565d90b8
7
+ data.tar.gz: d38569db183c16dc2b6847096b365304f61a37c28a1de3c74d7034e4bcff600e3318bc13a1cf88bed39b8fda70a7ac6b8e769d3660f9f933b3cb26c62b5ee0ad
@@ -35,9 +35,8 @@ module ActiveRecord::Relation::Extended
35
35
  rel = unscope(*UNSCOPING_VALUES).select(columns)
36
36
  rel.instance_variable_set(:@translates_applied, true)
37
37
  rel.instance_variable_get(:@values)[:joins] = joins if joins
38
- from = rel.arel.to_sql
39
- as = @klass.table_name
40
- @arel.from("(#{from}) #{as}")
38
+ replace_plurals_in_projections
39
+ @arel.from("(#{rel.arel.to_sql}) #{@klass.table_name}")
41
40
  end
42
41
 
43
42
  def translated_columns_build
@@ -51,9 +50,19 @@ module ActiveRecord::Relation::Extended
51
50
 
52
51
  rel = spawn
53
52
  rel.instance_variable_set(:@without_projections, true)
54
- rel.add_translated_column column_name
53
+ rel.add_translated_column column_name if column_name
55
54
  rel.perform_calculation operation, column_name
56
55
  end
56
+
57
+ def replace_plurals_in_projections
58
+ @arel.projections.each do |column|
59
+ next unless column.is_a? String
60
+
61
+ name = column[0] == '"' ? column[1...-1] : column
62
+ plural = @klass::TRANSLATED_PLURALS[name.to_sym]
63
+ column.replace plural if plural
64
+ end
65
+ end
57
66
  end
58
67
 
59
68
  class ActiveRecord::Relation
@@ -23,7 +23,7 @@ module ClassMethods
23
23
  self::TRANSLATED[plural] = true
24
24
  column = plural.to_s.singularize.to_sym
25
25
  selection = I18n.available_locales.map do |locale|
26
- "#{column}_#{locale}"
26
+ "#{quoted_table_name}.\"#{column}_#{locale}\""
27
27
  end.join ','
28
28
  self::TRANSLATED_PLURALS[plural] = selection
29
29
  I18n.available_locales.each do |locale|
@@ -50,17 +50,12 @@ class FromClauseTranslate::TranslatedColumnsBuilder
50
50
 
51
51
  def arel_projection_translation column
52
52
  column = column.name if column.is_a? Arel::Attributes::Attribute
53
- column = column.to_s
53
+ column = column.to_s unless column.is_a? String
54
54
 
55
55
  name = column.first == '"' ? column[1...-1] : column
56
56
  return if @skip_translated.include? name
57
57
 
58
- selection = translated_selection name
59
- return column unless selection
60
-
61
- plural = @klass::TRANSLATED_PLURALS[name.to_sym]
62
- column.replace plural if plural
63
- selection
58
+ translated_selection(name) || column
64
59
  end
65
60
 
66
61
  def add_translated_columns_from_cores
@@ -87,7 +82,7 @@ class FromClauseTranslate::TranslatedColumnsBuilder
87
82
 
88
83
  name = child.left.name
89
84
  selection = translated_selection name
90
- @columns << selection if selection
85
+ @columns << (selection || name)
91
86
  end
92
87
  end
93
88
  end
@@ -1,3 +1,3 @@
1
1
  module FromClauseTranslate
2
- VERSION = '0.2.3'.freeze
2
+ VERSION = '0.2.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: from_clause_translate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Kushin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2018-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails