has_dynamic_columns 0.3.5 → 0.3.6

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
  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