composite_primary_keys 12.0.0.rc5 → 12.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.rdoc +41 -3
- data/README.rdoc +3 -2
- data/lib/composite_primary_keys.rb +57 -57
- data/lib/composite_primary_keys/active_model/attribute_assignment.rb +19 -0
- data/lib/composite_primary_keys/arel/sqlserver.rb +1 -3
- data/lib/composite_primary_keys/associations/through_association.rb +2 -1
- data/lib/composite_primary_keys/attribute_methods.rb +2 -2
- data/lib/composite_primary_keys/attribute_methods/primary_key.rb +13 -0
- data/lib/composite_primary_keys/base.rb +12 -1
- data/lib/composite_primary_keys/composite_arrays.rb +49 -14
- data/lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb +8 -3
- data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +1 -1
- data/lib/composite_primary_keys/connection_adapters/mysql/database_statements.rb +24 -0
- data/lib/composite_primary_keys/connection_adapters/sqlserver/database_statements.rb +30 -12
- data/lib/composite_primary_keys/core.rb +1 -1
- data/lib/composite_primary_keys/persistence.rb +2 -2
- data/lib/composite_primary_keys/relation.rb +108 -15
- data/lib/composite_primary_keys/relation/calculations.rb +5 -0
- data/lib/composite_primary_keys/relation/finder_methods.rb +8 -8
- data/lib/composite_primary_keys/relation/predicate_builder/association_query_value.rb +1 -1
- data/lib/composite_primary_keys/validations/uniqueness.rb +1 -1
- data/lib/composite_primary_keys/version.rb +2 -2
- data/test/abstract_unit.rb +4 -6
- data/test/fixtures/article.rb +4 -0
- data/test/fixtures/articles.yml +4 -3
- data/test/fixtures/comment.rb +1 -3
- data/test/fixtures/comments.yml +10 -9
- data/test/fixtures/db_definitions/db2-create-tables.sql +0 -14
- data/test/fixtures/db_definitions/db2-drop-tables.sql +1 -3
- data/test/fixtures/db_definitions/mysql.sql +7 -44
- data/test/fixtures/db_definitions/oracle.drop.sql +3 -9
- data/test/fixtures/db_definitions/oracle.sql +12 -48
- data/test/fixtures/db_definitions/postgresql.sql +7 -44
- data/test/fixtures/db_definitions/sqlite.sql +6 -42
- data/test/fixtures/db_definitions/sqlserver.sql +5 -41
- data/test/fixtures/department.rb +8 -3
- data/test/fixtures/departments.yml +4 -4
- data/test/fixtures/readings.yml +2 -2
- data/test/fixtures/restaurants_suburbs.yml +1 -1
- data/test/fixtures/streets.yml +2 -2
- data/test/fixtures/suburbs.yml +2 -2
- data/test/fixtures/user.rb +3 -2
- data/test/test_associations.rb +30 -23
- data/test/test_composite_arrays.rb +14 -0
- data/test/test_create.rb +15 -18
- data/test/test_delete.rb +3 -3
- data/test/test_exists.rb +5 -5
- data/test/test_find.rb +22 -2
- data/test/test_habtm.rb +2 -2
- data/test/test_ids.rb +5 -6
- data/test/test_nested_attributes.rb +0 -57
- data/test/test_polymorphic.rb +29 -13
- data/test/test_preload.rb +4 -3
- data/test/test_serialize.rb +2 -2
- data/test/test_update.rb +19 -1
- metadata +10 -70
- data/test/db_test.rb +0 -53
- data/test/fixtures/hack.rb +0 -5
- data/test/fixtures/hacks.yml +0 -3
- data/test/fixtures/pk_called_id.rb +0 -5
- data/test/fixtures/pk_called_ids.yml +0 -11
- data/test/fixtures/reference_code_using_composite_key_alias.rb +0 -8
- data/test/fixtures/reference_code_using_simple_key_alias.rb +0 -8
- data/test/fixtures/seat.rb +0 -5
- data/test/fixtures/seats.yml +0 -9
- data/test/fixtures/topic.rb +0 -6
- data/test/fixtures/topic_source.rb +0 -7
- data/test/setup.rb +0 -51
- data/test/test_aliases.rb +0 -18
- data/test/test_enum.rb +0 -21
- data/test/test_suite.rb +0 -35
data/test/test_serialize.rb
CHANGED
@@ -5,11 +5,11 @@ class TestSerialization < ActiveSupport::TestCase
|
|
5
5
|
|
6
6
|
def test_json
|
7
7
|
department = Department.first
|
8
|
-
assert_equal('{"
|
8
|
+
assert_equal('{"id":1,"location_id":1}', department.to_json)
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_serializable_hash
|
12
12
|
department = Department.first
|
13
|
-
assert_equal({"
|
13
|
+
assert_equal({"id" => 1,"location_id" => 1}, department.serializable_hash)
|
14
14
|
end
|
15
15
|
end
|
data/test/test_update.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../abstract_unit', __FILE__)
|
2
2
|
|
3
3
|
class TestUpdate < ActiveSupport::TestCase
|
4
|
-
fixtures :reference_types, :reference_codes
|
4
|
+
fixtures :departments, :reference_types, :reference_codes, :rooms, :room_assignments
|
5
5
|
|
6
6
|
CLASSES = {
|
7
7
|
:single => {
|
@@ -36,6 +36,13 @@ class TestUpdate < ActiveSupport::TestCase
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
def test_update_attributes_with_id_field
|
40
|
+
department = departments(:accounting)
|
41
|
+
department.update_attribute(:location_id, 3)
|
42
|
+
department.reload
|
43
|
+
assert_equal(3, department.location_id)
|
44
|
+
end
|
45
|
+
|
39
46
|
def test_update_primary_key
|
40
47
|
obj = ReferenceCode.find([1,1])
|
41
48
|
obj.reference_type_id = 2
|
@@ -76,4 +83,15 @@ class TestUpdate < ActiveSupport::TestCase
|
|
76
83
|
|
77
84
|
assert_equal(2, query.count)
|
78
85
|
end
|
86
|
+
|
87
|
+
def test_update_with_uniqueness
|
88
|
+
assignment = room_assignments(:jacksons_room)
|
89
|
+
room_1 = rooms(:branner_room_1)
|
90
|
+
room_2 = rooms(:branner_room_3)
|
91
|
+
|
92
|
+
assert_equal(room_1, assignment.room)
|
93
|
+
assignment.room = room_2
|
94
|
+
assignment.save!
|
95
|
+
assert_equal(room_2, assignment.room)
|
96
|
+
end
|
79
97
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: composite_primary_keys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.0.
|
4
|
+
version: 12.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charlie Savage
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 6.0.0
|
19
|
+
version: 6.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 6.0.0
|
26
|
+
version: 6.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,48 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: mysql2
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: sqlite3
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: pg
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
41
|
description: Composite key support for ActiveRecord
|
84
42
|
email:
|
85
43
|
executables: []
|
@@ -90,6 +48,7 @@ files:
|
|
90
48
|
- README.rdoc
|
91
49
|
- Rakefile
|
92
50
|
- lib/composite_primary_keys.rb
|
51
|
+
- lib/composite_primary_keys/active_model/attribute_assignment.rb
|
93
52
|
- lib/composite_primary_keys/arel/sqlserver.rb
|
94
53
|
- lib/composite_primary_keys/arel/to_sql.rb
|
95
54
|
- lib/composite_primary_keys/associations/association.rb
|
@@ -112,6 +71,7 @@ files:
|
|
112
71
|
- lib/composite_primary_keys/composite_relation.rb
|
113
72
|
- lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb
|
114
73
|
- lib/composite_primary_keys/connection_adapters/abstract_adapter.rb
|
74
|
+
- lib/composite_primary_keys/connection_adapters/mysql/database_statements.rb
|
115
75
|
- lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb
|
116
76
|
- lib/composite_primary_keys/connection_adapters/sqlserver/database_statements.rb
|
117
77
|
- lib/composite_primary_keys/core.rb
|
@@ -146,7 +106,6 @@ files:
|
|
146
106
|
- test/connections/databases.ci.yml
|
147
107
|
- test/connections/databases.example.yml
|
148
108
|
- test/connections/databases.yml
|
149
|
-
- test/db_test.rb
|
150
109
|
- test/fixtures/article.rb
|
151
110
|
- test/fixtures/articles.yml
|
152
111
|
- test/fixtures/capitol.rb
|
@@ -169,14 +128,10 @@ files:
|
|
169
128
|
- test/fixtures/employees.yml
|
170
129
|
- test/fixtures/group.rb
|
171
130
|
- test/fixtures/groups.yml
|
172
|
-
- test/fixtures/hack.rb
|
173
|
-
- test/fixtures/hacks.yml
|
174
131
|
- test/fixtures/membership.rb
|
175
132
|
- test/fixtures/membership_status.rb
|
176
133
|
- test/fixtures/membership_statuses.yml
|
177
134
|
- test/fixtures/memberships.yml
|
178
|
-
- test/fixtures/pk_called_id.rb
|
179
|
-
- test/fixtures/pk_called_ids.yml
|
180
135
|
- test/fixtures/product.rb
|
181
136
|
- test/fixtures/product_tariff.rb
|
182
137
|
- test/fixtures/product_tariffs.yml
|
@@ -184,8 +139,6 @@ files:
|
|
184
139
|
- test/fixtures/reading.rb
|
185
140
|
- test/fixtures/readings.yml
|
186
141
|
- test/fixtures/reference_code.rb
|
187
|
-
- test/fixtures/reference_code_using_composite_key_alias.rb
|
188
|
-
- test/fixtures/reference_code_using_simple_key_alias.rb
|
189
142
|
- test/fixtures/reference_codes.yml
|
190
143
|
- test/fixtures/reference_type.rb
|
191
144
|
- test/fixtures/reference_types.yml
|
@@ -201,8 +154,6 @@ files:
|
|
201
154
|
- test/fixtures/room_attribute_assignments.yml
|
202
155
|
- test/fixtures/room_attributes.yml
|
203
156
|
- test/fixtures/rooms.yml
|
204
|
-
- test/fixtures/seat.rb
|
205
|
-
- test/fixtures/seats.yml
|
206
157
|
- test/fixtures/street.rb
|
207
158
|
- test/fixtures/streets.yml
|
208
159
|
- test/fixtures/student.rb
|
@@ -211,16 +162,12 @@ files:
|
|
211
162
|
- test/fixtures/suburbs.yml
|
212
163
|
- test/fixtures/tariff.rb
|
213
164
|
- test/fixtures/tariffs.yml
|
214
|
-
- test/fixtures/topic.rb
|
215
|
-
- test/fixtures/topic_source.rb
|
216
165
|
- test/fixtures/topic_sources.yml
|
217
166
|
- test/fixtures/topics.yml
|
218
167
|
- test/fixtures/user.rb
|
219
168
|
- test/fixtures/users.yml
|
220
169
|
- test/plugins/pagination.rb
|
221
170
|
- test/plugins/pagination_helper.rb
|
222
|
-
- test/setup.rb
|
223
|
-
- test/test_aliases.rb
|
224
171
|
- test/test_associations.rb
|
225
172
|
- test/test_attribute_methods.rb
|
226
173
|
- test/test_attributes.rb
|
@@ -232,7 +179,6 @@ files:
|
|
232
179
|
- test/test_delete.rb
|
233
180
|
- test/test_dumpable.rb
|
234
181
|
- test/test_dup.rb
|
235
|
-
- test/test_enum.rb
|
236
182
|
- test/test_equal.rb
|
237
183
|
- test/test_exists.rb
|
238
184
|
- test/test_find.rb
|
@@ -247,7 +193,6 @@ files:
|
|
247
193
|
- test/test_preload.rb
|
248
194
|
- test/test_santiago.rb
|
249
195
|
- test/test_serialize.rb
|
250
|
-
- test/test_suite.rb
|
251
196
|
- test/test_touch.rb
|
252
197
|
- test/test_tutorial_example.rb
|
253
198
|
- test/test_update.rb
|
@@ -264,23 +209,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
264
209
|
requirements:
|
265
210
|
- - ">="
|
266
211
|
- !ruby/object:Gem::Version
|
267
|
-
version: 2.
|
212
|
+
version: 2.5.0
|
268
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
214
|
requirements:
|
270
|
-
- - "
|
215
|
+
- - ">="
|
271
216
|
- !ruby/object:Gem::Version
|
272
|
-
version:
|
217
|
+
version: '0'
|
273
218
|
requirements: []
|
274
|
-
rubygems_version: 3.
|
219
|
+
rubygems_version: 3.1.4
|
275
220
|
signing_key:
|
276
221
|
specification_version: 4
|
277
222
|
summary: Composite key support for ActiveRecord
|
278
223
|
test_files:
|
279
224
|
- test/abstract_unit.rb
|
280
|
-
- test/db_test.rb
|
281
225
|
- test/README_tests.rdoc
|
282
|
-
- test/setup.rb
|
283
|
-
- test/test_aliases.rb
|
284
226
|
- test/test_associations.rb
|
285
227
|
- test/test_attributes.rb
|
286
228
|
- test/test_attribute_methods.rb
|
@@ -292,7 +234,6 @@ test_files:
|
|
292
234
|
- test/test_delete.rb
|
293
235
|
- test/test_dumpable.rb
|
294
236
|
- test/test_dup.rb
|
295
|
-
- test/test_enum.rb
|
296
237
|
- test/test_equal.rb
|
297
238
|
- test/test_exists.rb
|
298
239
|
- test/test_find.rb
|
@@ -307,7 +248,6 @@ test_files:
|
|
307
248
|
- test/test_preload.rb
|
308
249
|
- test/test_santiago.rb
|
309
250
|
- test/test_serialize.rb
|
310
|
-
- test/test_suite.rb
|
311
251
|
- test/test_touch.rb
|
312
252
|
- test/test_tutorial_example.rb
|
313
253
|
- test/test_update.rb
|
data/test/db_test.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
# assoc_test.rb
|
2
|
-
|
3
|
-
path = File.expand_path(File.join(File.basename(__FILE__), "..", "lib", "composite_primary_keys"))
|
4
|
-
puts path
|
5
|
-
|
6
|
-
require File.join(path)
|
7
|
-
require 'active_record'
|
8
|
-
|
9
|
-
$configuration = {
|
10
|
-
:adapter => 'postgresql',
|
11
|
-
:database => 'cpk_test',
|
12
|
-
:username => 'postgres'
|
13
|
-
}
|
14
|
-
|
15
|
-
ActiveRecord::Base.establish_connection($configuration) unless ActiveRecord::Base.connected?
|
16
|
-
|
17
|
-
module GlobePG
|
18
|
-
class PGBase < ActiveRecord::Base
|
19
|
-
self.abstract_class = true
|
20
|
-
# establish_connection($configuration) unless connected?
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
module GlobePG
|
25
|
-
class TeacherToSchool < PGBase
|
26
|
-
set_table_name 'teacher_to_school'
|
27
|
-
self.primary_keys = ['teacherid', 'schoolid']
|
28
|
-
|
29
|
-
belongs_to :globe_teacher, :foreign_key => 'teacherid'
|
30
|
-
belongs_to :globe_school, :foreign_key => 'schoolid'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
module GlobePG
|
35
|
-
class GlobeSchool < PGBase
|
36
|
-
set_table_name 'globe_school'
|
37
|
-
self.primary_key = 'schoolid'
|
38
|
-
has_many :teacher_to_schools, :foreign_key => :schoolid
|
39
|
-
has_many :globe_teachers, :through => :teacher_to_schools
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
module GlobePG
|
44
|
-
class GlobeTeacher < PGBase
|
45
|
-
set_table_name 'globe_teacher'
|
46
|
-
self.primary_key = 'teacherid'
|
47
|
-
has_many :teacher_to_schools, :foreign_key => :teacherid
|
48
|
-
has_many :globe_schools, :through => :teacher_to_schools
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
teacher = GlobePG::GlobeTeacher.find_by_teacherid('ZZGLOBEY')
|
53
|
-
p teacher.globe_schools
|
data/test/fixtures/hack.rb
DELETED
data/test/fixtures/hacks.yml
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
class ReferenceCodeUsingCompositeKeyAlias < ActiveRecord::Base
|
2
|
-
self.table_name = 'reference_codes'
|
3
|
-
self.primary_key = [:reference_type_id, :reference_code]
|
4
|
-
|
5
|
-
belongs_to :reference_type, :foreign_key => "reference_type_id"
|
6
|
-
|
7
|
-
validates_presence_of :reference_code, :code_label, :abbreviation
|
8
|
-
end
|
@@ -1,8 +0,0 @@
|
|
1
|
-
class ReferenceCodeUsingSimpleKeyAlias < ActiveRecord::Base
|
2
|
-
self.table_name = 'reference_codes'
|
3
|
-
self.primary_key = :code_label
|
4
|
-
|
5
|
-
belongs_to :reference_type, :foreign_key => "reference_type_id"
|
6
|
-
|
7
|
-
validates_presence_of :reference_code, :code_label, :abbreviation
|
8
|
-
end
|
data/test/fixtures/seat.rb
DELETED
data/test/fixtures/seats.yml
DELETED
data/test/fixtures/topic.rb
DELETED
data/test/setup.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
# setup_db.rb
|
2
|
-
require 'dbi'
|
3
|
-
|
4
|
-
# Run "createdb cpk_test" first
|
5
|
-
|
6
|
-
teacher_to_school = %Q{
|
7
|
-
create table teacher_to_school(
|
8
|
-
schoolid varchar(8),
|
9
|
-
teacherid varchar(8),
|
10
|
-
datebegin date,
|
11
|
-
teacherrole varchar(20),
|
12
|
-
primary key (schoolid, teacherid)
|
13
|
-
);
|
14
|
-
|
15
|
-
}
|
16
|
-
|
17
|
-
globe_teacher = %Q{
|
18
|
-
create table globe_teacher(
|
19
|
-
teacherid varchar(8) primary key,
|
20
|
-
currentschoolid varchar(8),
|
21
|
-
userid varchar(16)
|
22
|
-
);
|
23
|
-
|
24
|
-
}
|
25
|
-
|
26
|
-
globe_school = %Q{
|
27
|
-
create table globe_school(
|
28
|
-
schoolid varchar(8) primary key,
|
29
|
-
schoolname varchar(100) not null,
|
30
|
-
city varchar(35) not null
|
31
|
-
)
|
32
|
-
|
33
|
-
}
|
34
|
-
|
35
|
-
add_records = [
|
36
|
-
"insert into globe_teacher values ('ZZGLOBEY', 'ZZGLOBE1',
|
37
|
-
'dberger');",
|
38
|
-
"insert into globe_school values ('ZZCOUCAR', 'NCAR Foothills Lab',
|
39
|
-
'Boulder');",
|
40
|
-
"insert into globe_school values ('ZZGLOBE1', 'The GLOBE Program',
|
41
|
-
'Boulder');",
|
42
|
-
"insert into teacher_to_school values('ZZGLOBE1', 'ZZGLOBEY', '1-JUN-2010', 'GLOBE OFFICE');",
|
43
|
-
"insert into teacher_to_school values('ZZCOUCAR', 'ZZGLOBEY', '1-AUG-2010', 'GLOBE Teacher');"
|
44
|
-
]
|
45
|
-
|
46
|
-
DBI.connect('dbi:Pg:cpk_test', 'postgres') do |dbh|
|
47
|
-
dbh.execute(teacher_to_school)
|
48
|
-
dbh.execute(globe_teacher)
|
49
|
-
dbh.execute(globe_school)
|
50
|
-
add_records.each{ |sql| dbh.execute(sql) }
|
51
|
-
end
|