active_record_distinct_on 0.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
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 55b22baddc27dc7d8703e27b79e676f06284b702
|
4
|
+
data.tar.gz: 5dcbffedd0f0bfe507b89b65b1169953eceed123
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a8e645316a95be4eb16d5fe415547b06781a37bb10a86a64c70e9efd963e46141e02dd363bb482e7d000e32d878620afe0f86633b4141db07677d56c97957ce3
|
7
|
+
data.tar.gz: 6041dd0613643a47121e7ca99122d7777fe3ec7d7d49ad6381df7b8bf66bd2d83fa7c1fd14c94660d309c5009c5d74714a62f1621e8e644b1a5a32292a88f6bd
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'active_record_distinct_on/version'
|
2
|
+
|
3
|
+
require 'active_record'
|
4
|
+
|
5
|
+
module ActiveRecordDistinctOn
|
6
|
+
autoload :DistinctOnQueryMethods, 'active_record_distinct_on/distinct_on_query_methods'
|
7
|
+
|
8
|
+
def self.install
|
9
|
+
ActiveRecord::Relation.include DistinctOnQueryMethods
|
10
|
+
ActiveRecord::Querying.delegate :distinct_on, to: :all
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'active_record_distinct_on/railtie' if defined?(Rails)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'active_record_distinct_on'
|
2
|
+
|
3
|
+
module ActiveRecordDistinctOn
|
4
|
+
module DistinctOnQueryMethods
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
FROZEN_EMPTY_ARRAY = [].freeze
|
8
|
+
|
9
|
+
included do
|
10
|
+
self::MULTI_VALUE_METHODS << :distinct_on
|
11
|
+
self::INVALID_METHODS_FOR_DELETE_ALL << :distinct_on
|
12
|
+
self::VALUE_METHODS << :distinct_on
|
13
|
+
end
|
14
|
+
|
15
|
+
def distinct_on_values
|
16
|
+
@values[:distinct_on] || FROZEN_EMPTY_ARRAY
|
17
|
+
end
|
18
|
+
|
19
|
+
def distinct_on_values=(values)
|
20
|
+
@values[:distinct_on] = values
|
21
|
+
end
|
22
|
+
|
23
|
+
def distinct_on(*fields)
|
24
|
+
raise ArgumentError, 'Call this with at least one field' if fields.empty?
|
25
|
+
spawn.distinct_on!(*fields)
|
26
|
+
end
|
27
|
+
|
28
|
+
def distinct_on!(*fields)
|
29
|
+
fields.flatten!
|
30
|
+
fields.map! { |field| klass.attribute_alias?(field) ? klass.attribute_alias(field).to_sym : field }
|
31
|
+
self.distinct_on_values += fields
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def build_arel
|
38
|
+
super.tap do |arel|
|
39
|
+
build_distinct_on(arel, distinct_on_values)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_distinct_on(arel, columns)
|
44
|
+
arel.distinct_on arel_columns columns unless columns.empty?
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'active_record_distinct_on'
|
2
|
+
|
3
|
+
module ActiveRecordDistinctOn
|
4
|
+
class Railtie < ::Rails::Railtie
|
5
|
+
initializer 'active_record_distinct_on.monkey_patch_active_record' do
|
6
|
+
ActiveSupport.on_load(:active_record) do
|
7
|
+
ActiveRecordDistinctOn.install
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: active_record_distinct_on
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alec Larsen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.2.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.2.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.2.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: arel
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.1.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.10'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Adds ActiveRecord::Relation#distinct_on and ActiveRecord::Querying#distinct_on
|
112
|
+
email:
|
113
|
+
- aleclarsen42@gmail.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- lib/active_record_distinct_on.rb
|
119
|
+
- lib/active_record_distinct_on/distinct_on_query_methods.rb
|
120
|
+
- lib/active_record_distinct_on/railtie.rb
|
121
|
+
- lib/active_record_distinct_on/version.rb
|
122
|
+
homepage: https://github.com/anarchocurious/active_record_distinct_on
|
123
|
+
licenses:
|
124
|
+
- MIT
|
125
|
+
metadata: {}
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubyforge_project:
|
142
|
+
rubygems_version: 2.5.1
|
143
|
+
signing_key:
|
144
|
+
specification_version: 4
|
145
|
+
summary: Adds support for `DISTINCT ON` statements when querying with ActiveRecord
|
146
|
+
test_files: []
|