composite_primary_keys 1.0.5 → 1.0.6

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.
@@ -1,3 +1,7 @@
1
+ == 1.0.6 2008-08-06
2
+
3
+ * fix associations create
4
+
1
5
  == 1.0.5 2008-07-25
2
6
 
3
7
  * fix for calculations with a group by clause [thx Sirius Black]
@@ -280,7 +280,16 @@ module ActiveRecord::Associations
280
280
  quoted_ids = quoted_ids.split(CompositePrimaryKeys::ID_SEP) if quoted_ids.is_a?(String)
281
281
  keys_ids = [keys, quoted_ids].transpose
282
282
  keys_ids.collect {|key, id| "(#{table_name}.#{key} = #{id})"}.join(' AND ')
283
- end
283
+ end
284
+
285
+ def set_belongs_to_association_for(record)
286
+ if @reflection.options[:as]
287
+ raise 'polymorphic joins are not supported by composite_primary_keys'
288
+ else
289
+ key_values = @reflection.primary_key_name.to_s.split(CompositePrimaryKeys::ID_SEP).zip(@owner.id)
290
+ key_values.each{|kv| record[kv.first] = kv.last} unless @owner.new_record?
291
+ end
292
+ end
284
293
  end
285
294
 
286
295
  class HasAndBelongsToManyAssociation < AssociationCollection #:nodoc:
@@ -2,7 +2,7 @@ module CompositePrimaryKeys
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 0
5
- TINY = 5
5
+ TINY = 6
6
6
  STRING = [MAJOR, MINOR, TINY].join('.')
7
7
  end
8
8
  end
@@ -1,4 +1,5 @@
1
1
  require 'abstract_unit'
2
+ require 'fixtures/article'
2
3
  require 'fixtures/product'
3
4
  require 'fixtures/tariff'
4
5
  require 'fixtures/product_tariff'
@@ -12,10 +13,11 @@ require 'fixtures/room_attribute_assignment'
12
13
  require 'fixtures/student'
13
14
  require 'fixtures/room_assignment'
14
15
  require 'fixtures/user'
16
+ require 'fixtures/reading'
15
17
 
16
18
  class TestAssociations < Test::Unit::TestCase
17
- fixtures :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants, :restaurants_suburbs,
18
- :dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users
19
+ fixtures :articles, :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants, :restaurants_suburbs,
20
+ :dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users, :readings
19
21
 
20
22
  def test_quoted_table_columns
21
23
  assert_equal "product_tariffs.product_id,product_tariffs.tariff_id,product_tariffs.tariff_start_date",
@@ -1,9 +1,11 @@
1
1
  require 'abstract_unit'
2
2
  require 'fixtures/reference_type'
3
3
  require 'fixtures/reference_code'
4
+ require 'fixtures/street'
5
+ require 'fixtures/suburb'
4
6
 
5
7
  class TestCreate < Test::Unit::TestCase
6
- fixtures :reference_types, :reference_codes
8
+ fixtures :reference_types, :reference_codes, :streets, :suburbs
7
9
 
8
10
  CLASSES = {
9
11
  :single => {
@@ -48,4 +50,12 @@ class TestCreate < Test::Unit::TestCase
48
50
  assert_equal composite?, !@successful, "Create should have failed for composites; #{@obj.inspect}"
49
51
  end
50
52
  end
53
+
54
+ def test_create_on_association
55
+ suburb = Suburb.find(:first)
56
+ suburb.streets.create(:city_id => suburb.city_id, :suburb_id => suburb.suburb_id, :name => "my street")
57
+ street = Street.find_by_name('my street')
58
+ assert_equal(suburb.city_id, street.city_id)
59
+ assert_equal(suburb.suburb_id, street.suburb_id)
60
+ end
51
61
  end
Binary file
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: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Nic Williams
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-25 00:00:00 -05:00
12
+ date: 2008-08-06 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency