where_exists 0.9.1 → 0.9.2

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e6f042ea66ced8e828fa202fe84705b55846641
4
- data.tar.gz: b28d7eaf45be811108a93108355ce05c2ca5f2d4
3
+ metadata.gz: 5779b5deb8c1a1c9bcc4685a636f537a0771352a
4
+ data.tar.gz: 40e44d5113bd916717ac8d2e2e8aa9a8c621075d
5
5
  SHA512:
6
- metadata.gz: bc5ccf9d5987400e2533b60bbef83b5643a23f7e2780b1e8db83546f2838eb239fb43bb3e1f9ae7e4738255d390a21f25ea989c1cf1afa88fc72b0483ae25baa
7
- data.tar.gz: 96255b728f3de38c8d48298eac8a6eb53b78550eb985cc37ccb3f9d93b31ea68f86171a89708b9f6a59260bd2bf22b9e0c43f29969c20e3ccf91114f4b190483
6
+ metadata.gz: a00a2b3f908457473c4347071d19e83c0f7e0b258ee3355ef02b3f07801a066382de7cb4b58d878eaee257a480b1589f0703041804cb61490443d135765ca35a
7
+ data.tar.gz: b00c7dc5fed3bef71965296ad320a81d8d12d9f161d6cd2e4b8d98ccf72bdb659e146e31da74fc0c3c70dfb15cb3dc90eb293d78b849466993272071980ebc13
@@ -55,7 +55,8 @@ module WhereExists
55
55
  self_type = quote_table_and_column_name(self.table_name, association.foreign_type)
56
56
 
57
57
  associated_models.each do |associated_model|
58
- other_ids = quote_table_and_column_name(associated_model.table_name, associated_model.primary_key)
58
+ primary_key = association.options[:primary_key] || associated_model.primary_key
59
+ other_ids = quote_table_and_column_name(associated_model.table_name, primary_key)
59
60
  query = associated_model.select("1").where("#{self_ids} = #{other_ids}").where(where_parameters)
60
61
  if polymorphic
61
62
  other_type = connection.quote(associated_model.name)
@@ -76,8 +77,9 @@ module WhereExists
76
77
  end
77
78
 
78
79
  associated_model = association.klass
80
+ primary_key = association.options[:primary_key] || self.primary_key
79
81
 
80
- self_ids = quote_table_and_column_name(self.table_name, self.primary_key)
82
+ self_ids = quote_table_and_column_name(self.table_name, primary_key)
81
83
  associated_ids = quote_table_and_column_name(associated_model.table_name, association.foreign_key)
82
84
 
83
85
  result = associated_model.select("1").where("#{associated_ids} = #{self_ids}")
@@ -1,3 +1,3 @@
1
1
  module WhereExists
2
- VERSION = "0.9.1"
2
+ VERSION = "0.9.2"
3
3
  end
@@ -2,19 +2,20 @@ require 'test_helper'
2
2
 
3
3
  ActiveRecord::Migration.create_table :simple_entities, :force => true do |t|
4
4
  t.string :name
5
+ t.integer :my_id
5
6
  end
6
7
 
7
8
  ActiveRecord::Migration.create_table :simple_entity_children, :force => true do |t|
8
- t.integer :simple_entity_id
9
+ t.integer :parent_id
9
10
  t.string :name
10
11
  end
11
12
 
12
13
  class SimpleEntity < ActiveRecord::Base
13
- has_many :simple_entity_children
14
+ has_many :simple_entity_children, primary_key: :my_id, foreign_key: :parent_id
14
15
  end
15
16
 
16
17
  class SimpleEntityChild < ActiveRecord::Base
17
- belongs_to :simple_entity
18
+ belongs_to :simple_entity, foreign_key: :parent_id, primary_key: :my_id
18
19
  end
19
20
 
20
21
  class BelongsToTest < Minitest::Unit::TestCase
@@ -23,10 +24,10 @@ class BelongsToTest < Minitest::Unit::TestCase
23
24
  end
24
25
 
25
26
  def test_nil_foreign_key
26
- entity = SimpleEntity.create!
27
+ entity = SimpleEntity.create!(my_id: 999)
27
28
 
28
- child = SimpleEntityChild.create!(simple_entity_id: entity.id)
29
- orphaned_child = SimpleEntityChild.create!(simple_entity_id: nil)
29
+ child = SimpleEntityChild.create!(parent_id: 999)
30
+ orphaned_child = SimpleEntityChild.create!(parent_id: nil)
30
31
 
31
32
  result = SimpleEntityChild.where_exists(:simple_entity)
32
33
 
@@ -35,10 +36,10 @@ class BelongsToTest < Minitest::Unit::TestCase
35
36
  end
36
37
 
37
38
  def test_not_existing_foreign_object
38
- entity = SimpleEntity.create!
39
+ entity = SimpleEntity.create!(my_id: 999)
39
40
 
40
- child = SimpleEntityChild.create!(simple_entity_id: entity.id)
41
- orphaned_child = SimpleEntityChild.create!(simple_entity_id: entity.id + 1)
41
+ child = SimpleEntityChild.create!(parent_id: 999)
42
+ orphaned_child = SimpleEntityChild.create!(parent_id: 500)
42
43
 
43
44
  result = SimpleEntityChild.where_exists(:simple_entity)
44
45
 
Binary file
@@ -2,19 +2,20 @@ require 'test_helper'
2
2
 
3
3
  ActiveRecord::Migration.create_table :simple_entities, :force => true do |t|
4
4
  t.string :name
5
+ t.integer :my_id
5
6
  end
6
7
 
7
8
  ActiveRecord::Migration.create_table :simple_entity_children, :force => true do |t|
8
- t.integer :simple_entity_id
9
+ t.integer :parent_id
9
10
  t.string :name
10
11
  end
11
12
 
12
13
  class SimpleEntity < ActiveRecord::Base
13
- has_many :simple_entity_children
14
+ has_many :simple_entity_children, primary_key: :my_id, foreign_key: :parent_id
14
15
  end
15
16
 
16
17
  class SimpleEntityChild < ActiveRecord::Base
17
- belongs_to :simple_entity
18
+ belongs_to :simple_entity, foreign_key: :parent_id
18
19
  end
19
20
 
20
21
  class HasManyTest < Minitest::Unit::TestCase
@@ -25,8 +26,8 @@ class HasManyTest < Minitest::Unit::TestCase
25
26
  def test_without_parameters
26
27
  child = SimpleEntityChild.create!
27
28
 
28
- blank_entity = SimpleEntity.create!
29
- filled_entity = SimpleEntity.create!(simple_entity_children: [child])
29
+ blank_entity = SimpleEntity.create!(my_id: 999)
30
+ filled_entity = SimpleEntity.create!(simple_entity_children: [child], my_id: 500)
30
31
 
31
32
  result = SimpleEntity.where_exists(:simple_entity_children)
32
33
 
@@ -38,9 +39,9 @@ class HasManyTest < Minitest::Unit::TestCase
38
39
  wrong_child = SimpleEntityChild.create!(name: 'wrong')
39
40
  child = SimpleEntityChild.create!(name: 'right')
40
41
 
41
- blank_entity = SimpleEntity.create!
42
- wrong_entity = SimpleEntity.create!(simple_entity_children: [wrong_child])
43
- entity = SimpleEntity.create!(name: 'this field is irrelevant', simple_entity_children: [child])
42
+ blank_entity = SimpleEntity.create!(my_id: 999)
43
+ wrong_entity = SimpleEntity.create!(simple_entity_children: [wrong_child], my_id: 500)
44
+ entity = SimpleEntity.create!(name: 'this field is irrelevant', simple_entity_children: [child], my_id: 300)
44
45
 
45
46
  result = SimpleEntity.where_exists(:simple_entity_children, name: 'right')
46
47
 
@@ -50,7 +51,7 @@ class HasManyTest < Minitest::Unit::TestCase
50
51
 
51
52
  def test_with_scope
52
53
  child = SimpleEntityChild.create!
53
- entity = SimpleEntity.create!(simple_entity_children: [child])
54
+ entity = SimpleEntity.create!(simple_entity_children: [child], my_id: 999)
54
55
 
55
56
  result = SimpleEntity.unscoped.where_exists(:simple_entity_children)
56
57
 
@@ -61,8 +62,8 @@ class HasManyTest < Minitest::Unit::TestCase
61
62
  def test_not_exists
62
63
  child = SimpleEntityChild.create!
63
64
 
64
- blank_entity = SimpleEntity.create!
65
- filled_entity = SimpleEntity.create!(simple_entity_children: [child])
65
+ blank_entity = SimpleEntity.create!(my_id: 999)
66
+ filled_entity = SimpleEntity.create!(simple_entity_children: [child], my_id: 500)
66
67
 
67
68
  result = SimpleEntity.where_not_exists(:simple_entity_children)
68
69
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: where_exists
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Zolotarev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-31 00:00:00.000000000 Z
11
+ date: 2015-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails