aggregate_columns 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/Rakefile +1 -1
  2. data/lib/aggregate_columns.rb +7 -5
  3. metadata +40 -19
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ PKG_FILES = FileList[
14
14
 
15
15
  spec = Gem::Specification.new do |s|
16
16
  s.name = "aggregate_columns"
17
- s.version = "0.9.1"
17
+ s.version = "0.9.2"
18
18
  s.author = "Marek Janukowicz"
19
19
  s.email = "marek@janukowicz.net"
20
20
  s.homepage = "http://www.bitbucket.org/starware/aggregate_columns"
@@ -47,7 +47,7 @@ module AggregateColumns
47
47
 
48
48
  module MethodsRails3
49
49
 
50
- def aggregate_columns( options )
50
+ def aggregate_column( options )
51
51
  rel = self.select( "#{table_name}.*" )
52
52
  # Process options
53
53
  options.assert_valid_keys( :association, :column, :function, :result_column, :join_type )
@@ -68,16 +68,18 @@ module AggregateColumns
68
68
  # (and not that complicated) to make it work on ActiveRecord::Relation
69
69
  # instances
70
70
  assoc_reflection = reflect_on_association( association )
71
- foreign_key = assoc_reflection.primary_key_name # As stupid as it looks, this is actually correct
71
+ foreign_key = assoc_reflection.foreign_key
72
72
  aggregate_table_name = assoc_reflection.table_name
73
73
  klass = assoc_reflection.klass
74
74
  join_type = options[:join_type] || "LEFT" # TODO: check if within allowed values
75
75
 
76
- aggregate_rel = klass.select( "#{foreign_key}, #{function}(#{field}) AS #{result_column}" ).from( aggregate_table_name ).group( foreign_key )
76
+ aggregate_rel = klass.select( "#{function}(#{field}) AS #{result_column}" ).from( aggregate_table_name ).where( "#{table_name}.id = #{result_column}_join.#{foreign_key}" )
77
+ #aggregate_rel = klass.select( "#{foreign_key}, #{function}(#{field}) AS #{result_column}" ).from( aggregate_table_name ).group( foreign_key )
77
78
  aggregate_rel = yield( aggregate_rel ) if block_given?
78
79
  rel = rel.
79
- joins( "#{join_type.to_s.upcase} JOIN (#{aggregate_rel.to_sql}) #{result_column}_join ON #{table_name}.id = #{result_column}_join.#{foreign_key}" ).
80
- select( result_column.to_s ).
80
+ #joins( "#{join_type.to_s.upcase} JOIN (#{aggregate_rel.to_sql}) #{result_column}_join ON #{table_name}.id = #{result_column}_join.#{foreign_key}" ).
81
+ #select( result_column.to_s ).
82
+ select( "(#{aggregate_rel.to_sql}) AS #{result_column}" ).
81
83
  order( "#{result_column} DESC" ) # You might reorder if you want to have it differently
82
84
  return rel
83
85
  end
metadata CHANGED
@@ -1,50 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: aggregate_columns
3
- version: !ruby/object:Gem::Version
4
- version: 0.9.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 63
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 9
9
+ - 2
10
+ version: 0.9.2
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Marek Janukowicz
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-11-29 00:00:00.000000000 Z
17
+
18
+ date: 2011-12-07 00:00:00 +01:00
19
+ default_executable:
13
20
  dependencies: []
21
+
14
22
  description:
15
23
  email: marek@janukowicz.net
16
24
  executables: []
25
+
17
26
  extensions: []
18
- extra_rdoc_files:
27
+
28
+ extra_rdoc_files:
19
29
  - README
20
- files:
30
+ files:
21
31
  - Rakefile
22
32
  - README
23
33
  - lib/aggregate_columns.rb
24
34
  - test/aggregate_columns_test.rb
25
35
  - test/test_helper.rb
36
+ has_rdoc: true
26
37
  homepage: http://www.bitbucket.org/starware/aggregate_columns
27
38
  licenses: []
39
+
28
40
  post_install_message:
29
41
  rdoc_options: []
30
- require_paths:
42
+
43
+ require_paths:
31
44
  - lib
32
- required_ruby_version: !ruby/object:Gem::Requirement
45
+ required_ruby_version: !ruby/object:Gem::Requirement
33
46
  none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ hash: 3
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
55
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
44
63
  requirements: []
64
+
45
65
  rubyforge_project:
46
- rubygems_version: 1.8.11
66
+ rubygems_version: 1.6.2
47
67
  signing_key:
48
68
  specification_version: 3
49
69
  summary: Create and use aggregate columns in Rails applications
50
70
  test_files: []
71
+