composite_primary_keys 6.0.1 → 6.0.3
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 +13 -5
- data/History.rdoc +9 -0
- data/README.rdoc +1 -1
- data/lib/composite_primary_keys.rb +3 -1
- data/lib/composite_primary_keys/active_record_overides.rb +37 -0
- data/lib/composite_primary_keys/base.rb +6 -3
- data/lib/composite_primary_keys/connection_adapters/postgresql_adapter.rb +11 -1
- data/lib/composite_primary_keys/relation/batches.rb +1 -1
- data/lib/composite_primary_keys/version.rb +1 -1
- data/scripts/console.rb +0 -0
- data/test/abstract_unit.rb +3 -1
- data/test/fixtures/reference_code_using_composite_key_alias.rb +8 -0
- data/test/fixtures/reference_code_using_simple_key_alias.rb +8 -0
- data/test/fixtures/room.rb +1 -1
- data/test/fixtures/user.rb +1 -1
- data/test/test_aliases.rb +18 -0
- data/test/test_associations.rb +26 -32
- data/test/test_calculations.rb +7 -8
- data/test/test_create.rb +14 -14
- data/test/test_find.rb +4 -4
- data/test/test_habtm.rb +1 -1
- data/test/test_ids.rb +1 -1
- data/test/test_update.rb +2 -3
- metadata +24 -22
- data/test/connections/databases.yml +0 -18
- data/test/debug.log +0 -589
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NWNiZWUyNjQ5MTQ5Y2UzYTI4Nzg1NjcyOGMxOTBhYzJmZTAzMmZmNQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OWM0NTg5MmYyMzI5OTViODJmYTJlYmZhOGEyOWNjMjY2MWQzMzNjYQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzE2Y2ViOTJiMDVkZGU4ZTQwMTJjODBjZjViN2ZmOGViMGI5MDJmOGQ1YTMw
|
10
|
+
OGMxYzg1YjhjNDVkMTYzZjIyNzU3Njg5YWI5YzY4NjY5NTJmYWY0NDllZGI1
|
11
|
+
ZmIxZmY0MjMxYzkyN2IzNmU0ZTgyZjk3MGUyYWZkMzkyNmMwMjU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NTBlNGNhNjBiMTEwMWM5YjcyZmY5OGNjMmQzNTQ4YjhkN2IxZWQ5OGE0MjYw
|
14
|
+
ZGNhOTE5NzY2M2MxZWNjMmNkYjU3NWIyYTQ0OWYyYzYwYzM1YWJjYTkyOTI0
|
15
|
+
MDExYTkyYzIwNTgzNzI2OTY4ZTBmOGIwYmQ5Njc1Mjc5ZmI5ODg=
|
data/History.rdoc
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
== 6.0.3 (2014-04-28)
|
2
|
+
|
3
|
+
* Fixes setting of primary key when CPK is not used for a given model (see #191)
|
4
|
+
|
5
|
+
== 6.0.2 (2014-04-28)
|
6
|
+
|
7
|
+
* Fixes relating to ActiveRecord 4.0.x compatibility (Dan Draper)
|
8
|
+
* Ensure that primary key is set on instance when creating new records (Dan Draper)
|
9
|
+
|
1
10
|
== 6.0.1 (2013-11-29)
|
2
11
|
|
3
12
|
* Handle records == :all in HasManyAssociation#delete_records. Without this calling
|
data/README.rdoc
CHANGED
@@ -48,6 +48,7 @@ require 'active_record/associations/preloader/association'
|
|
48
48
|
require 'active_record/associations/preloader/belongs_to'
|
49
49
|
require 'active_record/associations/preloader/has_and_belongs_to_many'
|
50
50
|
|
51
|
+
|
51
52
|
require 'active_model/dirty'
|
52
53
|
|
53
54
|
require 'active_record/attribute_methods/dirty'
|
@@ -67,6 +68,7 @@ require 'active_record/validations/uniqueness'
|
|
67
68
|
|
68
69
|
# CPK files
|
69
70
|
require 'composite_primary_keys/persistence'
|
71
|
+
require 'composite_primary_keys/active_record_overides'
|
70
72
|
require 'composite_primary_keys/base'
|
71
73
|
require 'composite_primary_keys/core'
|
72
74
|
require 'composite_primary_keys/composite_arrays'
|
@@ -102,4 +104,4 @@ require 'composite_primary_keys/relation/calculations'
|
|
102
104
|
require 'composite_primary_keys/relation/finder_methods'
|
103
105
|
require 'composite_primary_keys/relation/query_methods'
|
104
106
|
|
105
|
-
require 'composite_primary_keys/validations/uniqueness'
|
107
|
+
require 'composite_primary_keys/validations/uniqueness'
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module CompositePrimaryKeys
|
2
|
+
module ActiveRecord
|
3
|
+
module Overides
|
4
|
+
|
5
|
+
# This override ensures that pkeys are set on the instance when records are created.
|
6
|
+
# However, while ActiveRecord::Persistence defines a create_record method
|
7
|
+
# the call in create_or_update is actually calling the method create_record in the Dirty concern
|
8
|
+
# which removes the pkey attrs and also sets updated/created at timestamps
|
9
|
+
# For some reason when we overide here we lose dirty!
|
10
|
+
# So, for now, timestamps are recorded explicitly
|
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)
|
15
|
+
|
16
|
+
new_id = self.class.unscoped.insert attributes_values
|
17
|
+
self.id = new_id if self.class.primary_key
|
18
|
+
|
19
|
+
@new_record = false
|
20
|
+
id
|
21
|
+
end
|
22
|
+
|
23
|
+
def record_timestamps!
|
24
|
+
if self.record_timestamps
|
25
|
+
current_time = current_time_from_proper_timezone
|
26
|
+
|
27
|
+
all_timestamp_attributes.each do |column|
|
28
|
+
if respond_to?(column) && respond_to?("#{column}=") && self.send(column).nil?
|
29
|
+
write_attribute(column.to_s, current_time)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
@@ -23,9 +23,9 @@ module ActiveRecord
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def primary_key_with_composite_key_support=(keys)
|
27
27
|
unless keys.kind_of?(Array)
|
28
|
-
self.
|
28
|
+
self.primary_key_without_composite_key_support = keys
|
29
29
|
return
|
30
30
|
end
|
31
31
|
|
@@ -34,8 +34,11 @@ module ActiveRecord
|
|
34
34
|
class_eval <<-EOV
|
35
35
|
extend CompositeClassMethods
|
36
36
|
include CompositeInstanceMethods
|
37
|
+
include CompositePrimaryKeys::ActiveRecord::Overides
|
37
38
|
EOV
|
38
39
|
end
|
40
|
+
alias_method_chain :primary_key=, :composite_key_support
|
41
|
+
alias_method :primary_keys=, :primary_key=
|
39
42
|
|
40
43
|
def set_primary_keys(*keys)
|
41
44
|
ActiveSupport::Deprecation.warn(
|
@@ -113,7 +116,7 @@ module ActiveRecord
|
|
113
116
|
|
114
117
|
def ==(comparison_object)
|
115
118
|
return true if equal? comparison_object
|
116
|
-
ids.is_a?(Array) ? super(comparison_object) && ids.all? {|id| id.
|
119
|
+
ids.is_a?(Array) ? super(comparison_object) && ids.all? {|id| !id.nil?} : super(comparison_object)
|
117
120
|
end
|
118
121
|
|
119
122
|
def can_change_primary_key_values?
|
@@ -31,6 +31,16 @@ module ActiveRecord
|
|
31
31
|
|
32
32
|
[sql, binds]
|
33
33
|
end
|
34
|
+
|
35
|
+
# Returns a single value if query returns a single element
|
36
|
+
# otherwise returns an array coresponding to the composite keys
|
37
|
+
#
|
38
|
+
def last_inserted_id(result)
|
39
|
+
row = result.rows.first
|
40
|
+
if Array === row
|
41
|
+
row.size == 1 ? row[0] : row
|
42
|
+
end
|
43
|
+
end
|
34
44
|
end
|
35
45
|
end
|
36
|
-
end
|
46
|
+
end
|
@@ -24,7 +24,7 @@ module CompositePrimaryKeys
|
|
24
24
|
# records = relation.where(table[primary_key].gteq(start)).all
|
25
25
|
records = self.primary_key.reduce(relation) do |rel, key|
|
26
26
|
rel.where(table[key].gteq(start))
|
27
|
-
end
|
27
|
+
end
|
28
28
|
|
29
29
|
while records.any?
|
30
30
|
records_size = records.size
|
data/scripts/console.rb
CHANGED
File without changes
|
data/test/abstract_unit.rb
CHANGED
@@ -25,6 +25,8 @@ ActiveRecord::Base.configurations[:test] = spec
|
|
25
25
|
# Tell ActiveRecord where to find models
|
26
26
|
ActiveSupport::Dependencies.autoload_paths << File.join(PROJECT_ROOT, 'test', 'fixtures')
|
27
27
|
|
28
|
+
I18n.config.enforce_available_locales = true
|
29
|
+
|
28
30
|
class ActiveSupport::TestCase
|
29
31
|
include ActiveRecord::TestFixtures
|
30
32
|
|
@@ -71,7 +73,7 @@ class ActiveSupport::TestCase
|
|
71
73
|
@klass_info = classes[@key_test]
|
72
74
|
@klass, @primary_keys = @klass_info[:class], @klass_info[:primary_keys]
|
73
75
|
order = @klass.primary_key.is_a?(String) ? @klass.primary_key : @klass.primary_key.join(',')
|
74
|
-
@first = @klass.
|
76
|
+
@first = @klass.order(order).first
|
75
77
|
yield
|
76
78
|
end
|
77
79
|
end
|
@@ -0,0 +1,8 @@
|
|
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
|
@@ -0,0 +1,8 @@
|
|
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/room.rb
CHANGED
@@ -6,6 +6,6 @@ class Room < ActiveRecord::Base
|
|
6
6
|
has_many :room_attributes, :through => :room_attribute_assignments
|
7
7
|
|
8
8
|
def find_custom_room_attributes
|
9
|
-
room_attributes.
|
9
|
+
room_attributes.where("room_attributes.name != ?", "type")
|
10
10
|
end
|
11
11
|
end
|
data/test/fixtures/user.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path('../abstract_unit', __FILE__)
|
2
|
+
|
3
|
+
class TestAliases < ActiveSupport::TestCase
|
4
|
+
fixtures :reference_codes
|
5
|
+
|
6
|
+
def test_primary_key_setter_alias_composite_key
|
7
|
+
reference_code = ReferenceCodeUsingCompositeKeyAlias.find([1, 2])
|
8
|
+
assert_equal 'MRS', reference_code.code_label
|
9
|
+
assert_equal 'Mrs', reference_code.abbreviation
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_primary_key_setter_alias_simple_key
|
13
|
+
reference_code = ReferenceCodeUsingSimpleKeyAlias.find('MRS')
|
14
|
+
assert_equal 1, reference_code.reference_type_id
|
15
|
+
assert_equal 2, reference_code.reference_code
|
16
|
+
assert_equal 'Mrs', reference_code.abbreviation
|
17
|
+
end
|
18
|
+
end
|
data/test/test_associations.rb
CHANGED
@@ -29,7 +29,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
29
29
|
# Its not generating the instances of associated classes from the rows
|
30
30
|
def test_find_includes
|
31
31
|
# Old style
|
32
|
-
products = Product.
|
32
|
+
products = Product.includes(:product_tariffs).all
|
33
33
|
assert_equal(3, products.length)
|
34
34
|
assert_equal(3, products.inject(0) {|sum, product| sum + product.product_tariffs.length})
|
35
35
|
|
@@ -44,8 +44,9 @@ class TestAssociations < ActiveSupport::TestCase
|
|
44
44
|
product_tarrif = product_tariffs(:second_free)
|
45
45
|
|
46
46
|
# Old style, include a where clause to force eager loading
|
47
|
-
products = Product.find(:all, :include => :product_tariffs,
|
48
|
-
|
47
|
+
#products = Product.find(:all, :include => :product_tariffs,
|
48
|
+
# :conditions => ["product_tariffs.product_id = ?", product.id])
|
49
|
+
products = Product.includes(:product_tariffs).where("product_tariffs.product_id = ?", product.id).references(:product_tariffs)
|
49
50
|
|
50
51
|
assert_equal(1, products.length)
|
51
52
|
assert_equal(product, products.first)
|
@@ -60,7 +61,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
60
61
|
|
61
62
|
def test_find_includes_tariffs
|
62
63
|
# Old style
|
63
|
-
tariffs = Tariff.
|
64
|
+
tariffs = Tariff.includes(:product_tariffs)
|
64
65
|
assert_equal(3, tariffs.length)
|
65
66
|
assert_equal(3, tariffs.inject(0) {|sum, tariff| sum + tariff.product_tariffs.length})
|
66
67
|
|
@@ -72,7 +73,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
72
73
|
|
73
74
|
def test_find_includes_product_tariffs_product
|
74
75
|
# Old style
|
75
|
-
product_tariffs = ProductTariff.
|
76
|
+
product_tariffs = ProductTariff.includes(:product)
|
76
77
|
assert_not_nil(product_tariffs)
|
77
78
|
assert_equal(3, product_tariffs.length)
|
78
79
|
|
@@ -84,7 +85,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
84
85
|
|
85
86
|
def test_find_includes_product_tariffs_tariff
|
86
87
|
# Old style
|
87
|
-
product_tariffs = ProductTariff.
|
88
|
+
product_tariffs = ProductTariff.includes(:tariff)
|
88
89
|
assert_equal(3, product_tariffs.length)
|
89
90
|
|
90
91
|
# New style
|
@@ -93,7 +94,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
93
94
|
end
|
94
95
|
|
95
96
|
def test_has_many_through
|
96
|
-
products = Product.
|
97
|
+
products = Product.includes(:tariffs)
|
97
98
|
assert_equal(3, products.length)
|
98
99
|
|
99
100
|
tarrifs_length = products.inject(0) {|sum, product| sum + product.tariffs.length}
|
@@ -101,12 +102,12 @@ class TestAssociations < ActiveSupport::TestCase
|
|
101
102
|
end
|
102
103
|
|
103
104
|
def test_new_style_includes_with_conditions
|
104
|
-
product_tariff = ProductTariff.includes(:tariff).where('tariffs.amount < 5').first
|
105
|
+
product_tariff = ProductTariff.includes(:tariff).where('tariffs.amount < 5').references(:tariffs).first
|
105
106
|
assert_equal(0, product_tariff.tariff.amount)
|
106
107
|
end
|
107
108
|
|
108
109
|
def test_find_product_includes
|
109
|
-
products = Product.
|
110
|
+
products = Product.includes(:product_tariffs => :tariff)
|
110
111
|
assert_equal(3, products.length)
|
111
112
|
|
112
113
|
product_tariffs_length = products.inject(0) {|sum, product| sum + product.product_tariffs.length}
|
@@ -114,7 +115,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
114
115
|
end
|
115
116
|
|
116
117
|
def test_find_tariffs_includes
|
117
|
-
tariffs = Tariff.
|
118
|
+
tariffs = Tariff.includes(:product_tariffs => :product)
|
118
119
|
assert_equal(3, tariffs.length)
|
119
120
|
|
120
121
|
product_tariffs_length = tariffs.inject(0) {|sum, tariff| sum + tariff.product_tariffs.length}
|
@@ -122,7 +123,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
122
123
|
end
|
123
124
|
|
124
125
|
def test_has_many_through_when_not_pre_loaded
|
125
|
-
student = Student.
|
126
|
+
student = Student.first
|
126
127
|
rooms = student.rooms
|
127
128
|
assert_equal(1, rooms.size)
|
128
129
|
assert_equal(1, rooms.first.dorm_id)
|
@@ -130,7 +131,7 @@ class TestAssociations < ActiveSupport::TestCase
|
|
130
131
|
end
|
131
132
|
|
132
133
|
def test_has_many_through_when_through_association_is_composite
|
133
|
-
dorm = Dorm.
|
134
|
+
dorm = Dorm.first
|
134
135
|
assert_equal(3, dorm.rooms.length)
|
135
136
|
assert_equal(1, dorm.rooms.first.room_attributes.length)
|
136
137
|
assert_equal('type', dorm.rooms.first.room_attributes.first.name)
|
@@ -143,10 +144,10 @@ class TestAssociations < ActiveSupport::TestCase
|
|
143
144
|
suburb = Suburb.find([2, 1])
|
144
145
|
assert_equal 1, suburb.first_streets.size
|
145
146
|
|
146
|
-
suburb = Suburb.find([2, 1]
|
147
|
+
suburb = Suburb.includes(:streets).find([2, 1])
|
147
148
|
assert_equal 2, suburb.streets.size
|
148
149
|
|
149
|
-
suburb = Suburb.find([2, 1]
|
150
|
+
suburb = Suburb.includes(:first_streets).find([2, 1])
|
150
151
|
assert_equal 1, suburb.first_streets.size
|
151
152
|
end
|
152
153
|
|
@@ -220,53 +221,46 @@ class TestAssociations < ActiveSupport::TestCase
|
|
220
221
|
end
|
221
222
|
|
222
223
|
def test_joins_has_many_with_primary_key
|
223
|
-
|
224
|
+
#@membership = Membership.find(:first, :joins => :readings, :conditions => { :readings => { :id => 1 } })
|
225
|
+
@membership = Membership.joins(:readings).where(readings: { id: 1 }).first
|
224
226
|
|
225
227
|
assert_equal [1, 1], @membership.id
|
226
228
|
end
|
227
229
|
|
228
230
|
def test_joins_has_one_with_primary_key
|
229
|
-
@membership = Membership.
|
230
|
-
:conditions => { :readings => { :id => 2 } })
|
231
|
+
@membership = Membership.joins(:readings).where(readings: { id: 2 }).first
|
231
232
|
|
232
233
|
assert_equal [1, 1], @membership.id
|
233
234
|
end
|
234
235
|
|
235
236
|
def test_has_many_through_with_conditions_when_through_association_is_not_composite
|
236
|
-
user = User.
|
237
|
-
assert_equal 1, user.articles.
|
237
|
+
user = User.first
|
238
|
+
assert_equal 1, user.articles.where("articles.name = ?", "Article One").size
|
238
239
|
end
|
239
240
|
|
240
241
|
def test_has_many_through_with_conditions_when_through_association_is_composite
|
241
|
-
room = Room.
|
242
|
-
assert_equal 0, room.room_attributes.
|
242
|
+
room = Room.first
|
243
|
+
assert_equal 0, room.room_attributes.where("room_attributes.name != ?", "type").size
|
243
244
|
end
|
244
245
|
|
245
246
|
def test_has_many_through_on_custom_finder_when_through_association_is_composite_finder_when_through_association_is_not_composite
|
246
|
-
user = User.
|
247
|
+
user = User.first
|
247
248
|
assert_equal(1, user.find_custom_articles.size)
|
248
249
|
end
|
249
250
|
|
250
251
|
def test_has_many_through_on_custom_finder_when_through_association_is_composite
|
251
|
-
room = Room.
|
252
|
+
room = Room.first
|
252
253
|
assert_equal(0, room.find_custom_room_attributes.size)
|
253
254
|
end
|
254
255
|
|
255
256
|
def test_has_many_with_primary_key_with_associations
|
256
|
-
|
257
|
-
memberships = Membership.find(:all, :include => :statuses,
|
258
|
-
:conditions => ["membership_statuses.status = ?",
|
259
|
-
'Active'])
|
260
|
-
|
257
|
+
memberships = Membership.includes(:statuses).where("membership_statuses.status = ?", 'Active').references(:membership_statuses)
|
261
258
|
assert_equal(1, memberships.length)
|
262
259
|
assert_equal([1,1], memberships[0].id)
|
263
260
|
end
|
264
261
|
|
265
262
|
def test_limitable_reflections
|
266
|
-
memberships = Membership.
|
267
|
-
:conditions => ["membership_statuses.status = ?",
|
268
|
-
'Active'],
|
269
|
-
:limit => 1)
|
263
|
+
memberships = Membership.includes(:statuses).where("membership_statuses.status = ?", 'Active').limit(1)
|
270
264
|
assert_equal(1, memberships.length)
|
271
265
|
assert_equal([1,1], memberships[0].id)
|
272
266
|
end
|
data/test/test_calculations.rb
CHANGED
@@ -6,28 +6,27 @@ class TestCalculations < ActiveSupport::TestCase
|
|
6
6
|
:departments, :employees, :memberships, :membership_statuses
|
7
7
|
|
8
8
|
def test_count
|
9
|
-
assert_equal(3, Product.
|
10
|
-
assert_equal(3, Tariff.
|
9
|
+
assert_equal(3, Product.includes(:product_tariffs).count)
|
10
|
+
assert_equal(3, Tariff.includes(:product_tariffs).count)
|
11
11
|
|
12
12
|
expected = {Date.today => 2,
|
13
13
|
Date.today.next => 1}
|
14
14
|
|
15
|
-
assert_equal(expected, Tariff.
|
15
|
+
assert_equal(expected, Tariff.group(:start_date).count)
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_count_distinct
|
19
19
|
product = products(:first_product)
|
20
|
-
assert_equal(1, product.product_tariffs.select('tariff_start_date').count
|
20
|
+
assert_equal(1, product.product_tariffs.select('tariff_start_date').distinct.count)
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_count_not_distinct
|
24
24
|
product = products(:first_product)
|
25
|
-
assert_equal(2, product.product_tariffs.select('tariff_start_date').count
|
25
|
+
assert_equal(2, product.product_tariffs.select('tariff_start_date').count)
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_count_includes
|
29
|
-
count = Dorm.
|
30
|
-
:conditions => ["rooms.room_id = ?", 2])
|
29
|
+
count = Dorm.where("rooms.room_id = ?", 2).includes(:rooms).references(:rooms).count
|
31
30
|
assert_equal(1, count)
|
32
31
|
end
|
33
32
|
|
@@ -35,4 +34,4 @@ class TestCalculations < ActiveSupport::TestCase
|
|
35
34
|
count = Tariff.includes(:product_tariffs).references(:product_tariffs).where("product_tariffs.tariff_id = ?", 2).count
|
36
35
|
assert_equal(1, count)
|
37
36
|
end
|
38
|
-
end
|
37
|
+
end
|