composite_primary_keys 6.0.3 → 6.0.5

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NWNiZWUyNjQ5MTQ5Y2UzYTI4Nzg1NjcyOGMxOTBhYzJmZTAzMmZmNQ==
4
+ ZTRiYTBhMGQzN2IxNDdkMGZhNjE1MGQ3NDc2ZWZkYTI2NWQ2Nzg1ZQ==
5
5
  data.tar.gz: !binary |-
6
- OWM0NTg5MmYyMzI5OTViODJmYTJlYmZhOGEyOWNjMjY2MWQzMzNjYQ==
6
+ YzNmMGQzNmIxODQ1NTk1ODk1ZDJjMTk4OTg4NDIxZDZlM2I5NzI4Nw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzE2Y2ViOTJiMDVkZGU4ZTQwMTJjODBjZjViN2ZmOGViMGI5MDJmOGQ1YTMw
10
- OGMxYzg1YjhjNDVkMTYzZjIyNzU3Njg5YWI5YzY4NjY5NTJmYWY0NDllZGI1
11
- ZmIxZmY0MjMxYzkyN2IzNmU0ZTgyZjk3MGUyYWZkMzkyNmMwMjU=
9
+ MWYyNTQwMDYyNTgxYmMyM2FjMTdlMjg2ZWU5Yjg4OTZjOTc5YzIzNzRlZDAx
10
+ MjhmNzk3NzI4NjFmOTc3OWVhMDY4ZThhYjI2NDhiMDQ3YzM0MTA1ZWQzOGM3
11
+ ZWZjOWE2NDhlNGJkZGU2MGI1Mjk1ZDJmODU2MDIzOTQ0NjExZDU=
12
12
  data.tar.gz: !binary |-
13
- NTBlNGNhNjBiMTEwMWM5YjcyZmY5OGNjMmQzNTQ4YjhkN2IxZWQ5OGE0MjYw
14
- ZGNhOTE5NzY2M2MxZWNjMmNkYjU3NWIyYTQ0OWYyYzYwYzM1YWJjYTkyOTI0
15
- MDExYTkyYzIwNTgzNzI2OTY4ZTBmOGIwYmQ5Njc1Mjc5ZmI5ODg=
13
+ NTZmZTQ0ZTNlYjhiZjBmYmE5YWEwZDNkMjViMTM0YjIyYTc1NDRhOTQ3YWU1
14
+ YzlmMTdkZDc3MmIxNDMwYTUwYWIyOWMwM2IzYzM2YTI3MzVlNmI3YzUzZTVk
15
+ YmIxZWJjNzc4YWU0YWE3YmRhZjVlODJjMGQwYzZmNWIwMGZmYWM=
@@ -9,15 +9,20 @@ module CompositePrimaryKeys
9
9
  # For some reason when we overide here we lose dirty!
10
10
  # So, for now, timestamps are recorded explicitly
11
11
  def create_record(attribute_names = nil)
12
- record_timestamps!
13
- attribute_names ||= keys_for_partial_write
14
- attributes_values = arel_attributes_with_values_for_create(attribute_names)
12
+ run_callbacks(:create) do
13
+ record_timestamps!
14
+ attribute_names ||= keys_for_partial_write
15
+ attributes_values = arel_attributes_with_values_for_create(attribute_names)
15
16
 
16
- new_id = self.class.unscoped.insert attributes_values
17
- self.id = new_id if self.class.primary_key
17
+ new_id = self.class.unscoped.insert attributes_values
18
18
 
19
- @new_record = false
20
- id
19
+ # DB like MySQL doesn't return the newly inserted result.
20
+ # self.id cannot be updated for this case.
21
+ self.id = new_id if self.class.primary_key and new_id.kind_of?(Array)
22
+
23
+ @new_record = false
24
+ id
25
+ end
21
26
  end
22
27
 
23
28
  def record_timestamps!
@@ -1,5 +1,13 @@
1
1
  module ActiveRecord
2
2
  module ConnectionAdapters
3
+ class PostgreSQLColumn
4
+ # This overide is needed to ensure ActiveRecord::Dirty behaves as expected
5
+ def type_cast(value)
6
+ return value if value.kind_of?(Array)
7
+ super
8
+ end
9
+ end
10
+
3
11
  class PostgreSQLAdapter
4
12
  def insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
5
13
  unless pk
@@ -36,7 +44,7 @@ module ActiveRecord
36
44
  # otherwise returns an array coresponding to the composite keys
37
45
  #
38
46
  def last_inserted_id(result)
39
- row = result.rows.first
47
+ row = result && result.rows.first
40
48
  if Array === row
41
49
  row.size == 1 ? row[0] : row
42
50
  end
@@ -2,7 +2,7 @@ module CompositePrimaryKeys
2
2
  module VERSION
3
3
  MAJOR = 6
4
4
  MINOR = 0
5
- TINY = 3
5
+ TINY = 5
6
6
  STRING = [MAJOR, MINOR, TINY].join('.')
7
7
  end
8
8
  end
@@ -0,0 +1,18 @@
1
+ # To run tests:
2
+ # 1. Copy this file to test/connections/databases.yml.
3
+ # 2. Update to match the databases you want to test against.
4
+
5
+ mysql:
6
+ adapter: mysql2
7
+ username: root
8
+ database: composite_primary_keys_unittest
9
+
10
+ sqlite3:
11
+ adapter: sqlite3
12
+ database: db/composite_primary_keys_unittest.sqlite
13
+
14
+ postgresql:
15
+ adapter: postgresql
16
+ database: composite_primary_keys_unittest
17
+ username: daniel
18
+ host: localhost
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: composite_primary_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.3
4
+ version: 6.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Nic Williams
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-28 00:00:00.000000000 Z
12
+ date: 2014-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -85,6 +85,7 @@ files:
85
85
  - test/abstract_unit.rb
86
86
  - test/connections/connection_spec.rb
87
87
  - test/connections/databases.example.yml
88
+ - test/connections/databases.yml
88
89
  - test/connections/native_ibm_db/connection.rb
89
90
  - test/connections/native_mysql/connection.rb
90
91
  - test/connections/native_oracle/connection.rb