has_dynamic_columns 0.3.5 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 654ea8aee466792c91ae8278022ad10ff034c072
4
- data.tar.gz: 7f5f8b41a767bd2fc12ab09b4d5c3e8df57e5e96
3
+ metadata.gz: 9ca96bb424702503964607990ceaf8bd1f1d295d
4
+ data.tar.gz: a58a689b2bd09f47717d03f46eb159642c9ed585
5
5
  SHA512:
6
- metadata.gz: 76a5cf1aa4b44b2ba1e6a02b40150ef23222015d3c812e3cb3061b44ceda271f5ebe9296cb2d5f19d44c1ee7ed064c0c90beacefa56903d256b2217969f19c69
7
- data.tar.gz: f2adf795d3b55a202237b5edbfb8f780ceb79d2011d19bb9916c16dc8a0edb389c2fc01d31d35e7c924523267900038e4a3c3aee2160b8626c69c6cdfb1fc9f3
6
+ metadata.gz: d28daa53d39118043b48317fa1528a858f4879700314f1409c3c85be2e5d75da596d68c6ff82c0c215b7ef98754861f8c35707a6398addefa35a458f856007d4
7
+ data.tar.gz: 809f23544abba7769655652fe364e58a1d697133ffebf721a813b8301526b4edb624121f25e9d4f91f634413f42f0d34a7b84d8f2e00981a1cb873b55d45a13b
data/README.md CHANGED
@@ -35,6 +35,7 @@ running the following command:
35
35
  rails generate has_dynamic_columns:active_record
36
36
  rails generate has_dynamic_columns:upgrade_0_3_0_active_record
37
37
  rails generate has_dynamic_columns:upgrade_0_3_4_active_record
38
+ rails generate has_dynamic_columns:upgrade_0_3_5_active_record
38
39
  rake db:migrate
39
40
 
40
41
  Usage
@@ -38,13 +38,15 @@ module HasDynamicColumns
38
38
  rel.expr.name = :value
39
39
  # We can work with this
40
40
  else
41
- col_name = rel.left.name
42
- dynamic_type = rel.left.relation.engine.to_s
41
+ if rel.left.relation.respond_to?(:engine)
42
+ col_name = rel.left.name
43
+ dynamic_type = rel.left.relation.engine.to_s
43
44
 
44
- res = dynamic_column_build_arel_joins(col_name, dynamic_type, scope, index+1, joins) # modify the where to use the aliased table
45
+ res = dynamic_column_build_arel_joins(col_name, dynamic_type, scope, index+1, joins) # modify the where to use the aliased table
45
46
 
46
- rel.left.relation = res[:table]
47
- rel.left.name = res[:column] || :value # value is the data storage column searchable on dynamic_column_data table
47
+ rel.left.relation = res[:table]
48
+ rel.left.name = res[:column] || :value # value is the data storage column searchable on dynamic_column_data table
49
+ end
48
50
  end
49
51
  end
50
52
 
@@ -154,17 +156,14 @@ module HasDynamicColumns
154
156
 
155
157
  # Builds all the joins required for the dynamic columns in the where/order clauses
156
158
  def build_dynamic_column_joins
157
- joins = {}
159
+ joins = self.joins_dynamic_columns
158
160
 
159
161
  self.where_dynamic_columns_values.each_with_index { |dynamic_scope, index_outer|
160
162
  dynamic_scope[:where].each_with_index { |rel, index_inner|
161
163
  # Process each where
162
164
  dynamic_column_process_arel_nodes(rel, dynamic_scope[:scope], (index_outer*1000)+(index_inner*10000), joins)
163
165
 
164
- # Warning
165
- # Must cast rel to a string - I've encountered ***strange*** situations where this will change the 'col_name' to value in the where clause
166
- # specifically, the test 'case should restrict if scope specified' will fail
167
- self.where_values += [rel.to_sql]
166
+ self.where_values += [rel]
168
167
  }
169
168
  }
170
169
  self.order_dynamic_columns_values.each_with_index { |dynamic_scope, index_outer|
@@ -3,7 +3,13 @@ module HasDynamicColumns
3
3
  module Relation
4
4
  def self.included(base)
5
5
  base.class_eval do
6
- attr_accessor :where_dynamic_columns_values, :order_dynamic_columns_values
6
+ attr_accessor :where_dynamic_columns_values, :order_dynamic_columns_values, :joins_dynamic_columns
7
+
8
+ # Collect all previously built join clauses
9
+ def joins_dynamic_columns
10
+ @joins_dynamic_columns = @joins_dynamic_columns || {}
11
+ @joins_dynamic_columns
12
+ end
7
13
 
8
14
  # Collect all where clauses
9
15
  def where_dynamic_columns_values
@@ -5,6 +5,12 @@ module HasDynamicColumns
5
5
  module Relation
6
6
  def self.included(base)
7
7
  base.class_eval do
8
+ # Collect all where clauses
9
+ def joins_dynamic_columns
10
+ @values[:joins_dynamic_columns] = @values[:joins_dynamic_columns] || {}
11
+ @values[:joins_dynamic_columns]
12
+ end
13
+
8
14
  # Collect all where clauses
9
15
  def where_dynamic_columns_values
10
16
  @values[:where_dynamic_columns_values] || []
@@ -1,3 +1,3 @@
1
1
  module HasDynamicColumns
2
- VERSION = "0.3.5"
2
+ VERSION = "0.3.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_dynamic_columns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Butch Marshall