composite_primary_keys 13.0.0 → 14.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +900 -883
  3. data/README.rdoc +182 -181
  4. data/Rakefile +37 -37
  5. data/lib/composite_primary_keys/arel/sqlserver.rb +37 -37
  6. data/lib/composite_primary_keys/arel/to_sql.rb +18 -18
  7. data/lib/composite_primary_keys/associations/association.rb +23 -23
  8. data/lib/composite_primary_keys/associations/collection_association.rb +31 -31
  9. data/lib/composite_primary_keys/associations/foreign_association.rb +15 -15
  10. data/lib/composite_primary_keys/associations/has_many_association.rb +35 -35
  11. data/lib/composite_primary_keys/associations/{join_dependency.rb → join_association.rb} +137 -118
  12. data/lib/composite_primary_keys/associations/preloader/association.rb +15 -0
  13. data/lib/composite_primary_keys/associations/through_association.rb +25 -25
  14. data/lib/composite_primary_keys/autosave_association.rb +60 -60
  15. data/lib/composite_primary_keys/composite_arrays.rb +86 -86
  16. data/lib/composite_primary_keys/composite_predicates.rb +3 -1
  17. data/lib/composite_primary_keys/composite_relation.rb +29 -29
  18. data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +10 -10
  19. data/lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb +26 -26
  20. data/lib/composite_primary_keys/counter_cache.rb +15 -15
  21. data/lib/composite_primary_keys/fixtures.rb +21 -21
  22. data/lib/composite_primary_keys/persistence.rb +96 -82
  23. data/lib/composite_primary_keys/relation/calculations.rb +110 -104
  24. data/lib/composite_primary_keys/relation.rb +2 -2
  25. data/lib/composite_primary_keys/sanitization.rb +42 -42
  26. data/lib/composite_primary_keys/transactions.rb +34 -34
  27. data/lib/composite_primary_keys/validations/uniqueness.rb +31 -31
  28. data/lib/composite_primary_keys/version.rb +8 -8
  29. data/lib/composite_primary_keys.rb +118 -118
  30. data/scripts/console.rb +48 -48
  31. data/scripts/txt2html +76 -76
  32. data/scripts/txt2js +65 -65
  33. data/tasks/databases/mysql.rake +40 -40
  34. data/tasks/databases/oracle.rake +41 -41
  35. data/tasks/databases/postgresql.rake +38 -38
  36. data/tasks/databases/sqlite.rake +25 -25
  37. data/tasks/databases/sqlserver.rake +43 -43
  38. data/tasks/website.rake +18 -18
  39. data/test/README_tests.rdoc +56 -56
  40. data/test/abstract_unit.rb +118 -114
  41. data/test/connections/connection_spec.rb +27 -27
  42. data/test/connections/databases.example.yml +40 -40
  43. data/test/connections/databases.yml +40 -39
  44. data/test/fixtures/article.rb +10 -10
  45. data/test/fixtures/articles.yml +7 -7
  46. data/test/fixtures/capitol.rb +3 -3
  47. data/test/fixtures/capitols.yml +16 -16
  48. data/test/fixtures/comment.rb +5 -5
  49. data/test/fixtures/comments.yml +17 -17
  50. data/test/fixtures/department.rb +16 -16
  51. data/test/fixtures/dorm.rb +2 -2
  52. data/test/fixtures/dorms.yml +4 -4
  53. data/test/fixtures/employee.rb +5 -5
  54. data/test/fixtures/group.rb +2 -2
  55. data/test/fixtures/groups.yml +6 -6
  56. data/test/fixtures/membership.rb +2 -0
  57. data/test/fixtures/membership_status.rb +2 -2
  58. data/test/fixtures/membership_statuses.yml +16 -16
  59. data/test/fixtures/memberships.yml +10 -10
  60. data/test/fixtures/product.rb +9 -9
  61. data/test/fixtures/product_tariff.rb +5 -5
  62. data/test/fixtures/product_tariffs.yml +14 -14
  63. data/test/fixtures/products.yml +11 -11
  64. data/test/fixtures/reading.rb +4 -4
  65. data/test/fixtures/readings.yml +10 -10
  66. data/test/fixtures/reference_code.rb +7 -7
  67. data/test/fixtures/reference_codes.yml +28 -28
  68. data/test/fixtures/reference_type.rb +12 -12
  69. data/test/fixtures/reference_types.yml +9 -9
  70. data/test/fixtures/restaurant.rb +9 -9
  71. data/test/fixtures/restaurants.yml +14 -14
  72. data/test/fixtures/restaurants_suburb.rb +2 -2
  73. data/test/fixtures/room.rb +11 -11
  74. data/test/fixtures/room_assignment.rb +13 -13
  75. data/test/fixtures/room_assignments.yml +24 -24
  76. data/test/fixtures/room_attribute.rb +2 -2
  77. data/test/fixtures/room_attribute_assignment.rb +4 -4
  78. data/test/fixtures/room_attribute_assignments.yml +4 -4
  79. data/test/fixtures/room_attributes.yml +2 -2
  80. data/test/fixtures/rooms.yml +12 -12
  81. data/test/fixtures/street.rb +2 -2
  82. data/test/fixtures/student.rb +3 -3
  83. data/test/fixtures/students.yml +15 -15
  84. data/test/fixtures/suburb.rb +5 -5
  85. data/test/fixtures/tariff.rb +5 -5
  86. data/test/fixtures/tariffs.yml +14 -14
  87. data/test/fixtures/topic_sources.yml +3 -3
  88. data/test/fixtures/topics.yml +8 -8
  89. data/test/fixtures/users.yml +10 -10
  90. data/test/plugins/pagination.rb +405 -405
  91. data/test/plugins/pagination_helper.rb +135 -135
  92. data/test/test_associations.rb +372 -364
  93. data/test/test_attribute_methods.rb +63 -63
  94. data/test/test_callbacks.rb +99 -99
  95. data/test/test_composite_arrays.rb +38 -38
  96. data/test/test_counter_cache.rb +30 -30
  97. data/test/test_delete.rb +6 -0
  98. data/test/test_dumpable.rb +15 -15
  99. data/test/test_dup.rb +37 -37
  100. data/test/test_equal.rb +26 -26
  101. data/test/test_habtm.rb +141 -141
  102. data/test/test_miscellaneous.rb +32 -32
  103. data/test/test_optimistic.rb +18 -18
  104. data/test/test_pagination.rb +35 -35
  105. data/test/test_polymorphic.rb +43 -43
  106. data/test/test_predicates.rb +59 -59
  107. data/test/test_preload.rb +102 -102
  108. data/test/test_santiago.rb +23 -23
  109. data/test/test_touch.rb +23 -23
  110. data/test/test_tutorial_example.rb +25 -25
  111. data/test/test_update.rb +6 -0
  112. data/test/test_validations.rb +13 -13
  113. metadata +13 -13
@@ -1,114 +1,118 @@
1
- spec_name = ENV['ADAPTER'] || 'sqlite'
2
- require 'bundler'
3
- require 'minitest/autorun'
4
-
5
- Bundler.setup(:default, spec_name.to_sym)
6
- Bundler.require(:default, spec_name.to_sym)
7
- require 'composite_primary_keys'
8
-
9
- # Require the connection spec
10
- PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
11
- require File.join(PROJECT_ROOT, 'test', 'connections', 'connection_spec')
12
-
13
- spec = CompositePrimaryKeys::ConnectionSpec[spec_name]
14
- puts "Loaded #{spec_name}"
15
-
16
- # And now connect to the database
17
- ActiveRecord::Base.establish_connection(spec)
18
-
19
- # Tell active record about the configuration
20
- ActiveRecord::Base.configurations = {test: spec}
21
-
22
- # Tell ActiveRecord where to find models
23
- ActiveSupport::Dependencies.autoload_paths << File.join(PROJECT_ROOT, 'test', 'fixtures')
24
-
25
- I18n.config.enforce_available_locales = true
26
-
27
- class ActiveSupport::TestCase
28
- include ActiveRecord::TestFixtures
29
-
30
- self.fixture_path = File.dirname(__FILE__) + '/fixtures/'
31
- self.use_instantiated_fixtures = false
32
- self.use_transactional_tests = true
33
- self.test_order = :random
34
-
35
- def assert_date_from_db(expected, actual, message = nil)
36
- # SQL Server doesn't have a separate column type just for dates,
37
- # so the time is in the string and incorrectly formatted
38
- if current_adapter?(:SQLServerAdapter)
39
- assert_equal expected.strftime('%Y/%m/%d 00:00:00'), actual.strftime('%Y/%m/%d 00:00:00')
40
- elsif current_adapter?(:SybaseAdapter)
41
- assert_equal expected.to_s, actual.to_date.to_s, message
42
- else
43
- assert_equal expected.to_s, actual.to_s, message
44
- end
45
- end
46
-
47
- def assert_queries(num = 1)
48
- ActiveRecord::Base.connection.class.class_eval do
49
- self.query_count = 0
50
- alias_method :execute, :execute_with_query_counting
51
- end
52
- yield
53
- ensure
54
- ActiveRecord::Base.connection.class.class_eval do
55
- alias_method :execute, :execute_without_query_counting
56
- end
57
- assert_equal num, ActiveRecord::Base.connection.query_count, '#{ActiveRecord::Base.connection.query_count} instead of #{num} queries were executed.'
58
- end
59
-
60
- def assert_no_queries(&block)
61
- assert_queries(0, &block)
62
- end
63
-
64
- cattr_accessor :classes
65
-
66
- protected
67
-
68
- def testing_with(&block)
69
- classes.keys.each do |key_test|
70
- @key_test = key_test
71
- @klass_info = classes[@key_test]
72
- @klass, @primary_keys = @klass_info[:class], @klass_info[:primary_keys]
73
- order = @klass.primary_key.is_a?(String) ? @klass.primary_key : @klass.primary_key.join(',')
74
- @first = @klass.order(order).first
75
- yield
76
- end
77
- end
78
-
79
- def first_id
80
- ids = (1..@primary_keys.length).map {|num| 1}
81
- composite? ? ids.to_composite_ids : ids.first
82
- end
83
-
84
- def composite?
85
- @key_test != :single
86
- end
87
-
88
- # Oracle metadata is in all caps.
89
- def with_quoted_identifiers(s)
90
- s.gsub(/'(\w+)'/) { |m|
91
- if ActiveRecord::Base.configurations[:test]['adapter'] =~ /oracle/i
92
- m.upcase
93
- else
94
- m
95
- end
96
- }
97
- end
98
- end
99
-
100
- def current_adapter?(type)
101
- ActiveRecord::ConnectionAdapters.const_defined?(type) &&
102
- ActiveRecord::Base.connection.instance_of?(ActiveRecord::ConnectionAdapters.const_get(type))
103
- end
104
-
105
- ActiveRecord::Base.connection.class.class_eval do
106
- cattr_accessor :query_count
107
- alias_method :execute_without_query_counting, :execute
108
- def execute_with_query_counting(sql, name = nil)
109
- self.query_count += 1
110
- execute_without_query_counting(sql, name)
111
- end
112
- end
113
-
114
- ActiveRecord::Base.logger = Logger.new(ENV['CPK_LOGFILE'] || STDOUT)
1
+ spec_name = ENV['ADAPTER'] || 'postgresql'
2
+ require 'bundler'
3
+ require 'minitest/autorun'
4
+
5
+ Bundler.setup(:default, spec_name.to_sym)
6
+ Bundler.require(:default, spec_name.to_sym)
7
+ require 'composite_primary_keys'
8
+
9
+ # Require the connection spec
10
+ PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
11
+ require File.join(PROJECT_ROOT, 'test', 'connections', 'connection_spec')
12
+
13
+ spec = CompositePrimaryKeys::ConnectionSpec[spec_name]
14
+ puts "Loaded #{spec_name}"
15
+
16
+ # And now connect to the database
17
+ ActiveRecord::Base.establish_connection(spec)
18
+
19
+ # Tell active record about the configuration
20
+ ActiveRecord::Base.configurations = {test: spec}
21
+
22
+ # Tell ActiveRecord where to find models
23
+ ActiveSupport::Dependencies.autoload_paths << File.join(PROJECT_ROOT, 'test', 'fixtures')
24
+ Dir[File.join(PROJECT_ROOT, 'test', 'fixtures', '*.rb')].each do |file_path|
25
+ require_file = file_path.sub(PROJECT_ROOT, '..').sub('.rb', '')
26
+ require_relative require_file
27
+ end
28
+
29
+ I18n.config.enforce_available_locales = true
30
+
31
+ class ActiveSupport::TestCase
32
+ include ActiveRecord::TestFixtures
33
+
34
+ self.fixture_path = File.dirname(__FILE__) + '/fixtures/'
35
+ self.use_instantiated_fixtures = false
36
+ self.use_transactional_tests = true
37
+ self.test_order = :random
38
+
39
+ def assert_date_from_db(expected, actual, message = nil)
40
+ # SQL Server doesn't have a separate column type just for dates,
41
+ # so the time is in the string and incorrectly formatted
42
+ if current_adapter?(:SQLServerAdapter)
43
+ assert_equal expected.strftime('%Y/%m/%d 00:00:00'), actual.strftime('%Y/%m/%d 00:00:00')
44
+ elsif current_adapter?(:SybaseAdapter)
45
+ assert_equal expected.to_s, actual.to_date.to_s, message
46
+ else
47
+ assert_equal expected.to_s, actual.to_s, message
48
+ end
49
+ end
50
+
51
+ def assert_queries(num = 1)
52
+ ActiveRecord::Base.connection.class.class_eval do
53
+ self.query_count = 0
54
+ alias_method :execute, :execute_with_query_counting
55
+ end
56
+ yield
57
+ ensure
58
+ ActiveRecord::Base.connection.class.class_eval do
59
+ alias_method :execute, :execute_without_query_counting
60
+ end
61
+ assert_equal num, ActiveRecord::Base.connection.query_count, '#{ActiveRecord::Base.connection.query_count} instead of #{num} queries were executed.'
62
+ end
63
+
64
+ def assert_no_queries(&block)
65
+ assert_queries(0, &block)
66
+ end
67
+
68
+ cattr_accessor :classes
69
+
70
+ protected
71
+
72
+ def testing_with(&block)
73
+ classes.keys.each do |key_test|
74
+ @key_test = key_test
75
+ @klass_info = classes[@key_test]
76
+ @klass, @primary_keys = @klass_info[:class], @klass_info[:primary_keys]
77
+ order = @klass.primary_key.is_a?(String) ? @klass.primary_key : @klass.primary_key.join(',')
78
+ @first = @klass.order(order).first
79
+ yield
80
+ end
81
+ end
82
+
83
+ def first_id
84
+ ids = (1..@primary_keys.length).map {|num| 1}
85
+ composite? ? ids.to_composite_ids : ids.first
86
+ end
87
+
88
+ def composite?
89
+ @key_test != :single
90
+ end
91
+
92
+ # Oracle metadata is in all caps.
93
+ def with_quoted_identifiers(s)
94
+ s.gsub(/'(\w+)'/) { |m|
95
+ if ActiveRecord::Base.configurations[:test]['adapter'] =~ /oracle/i
96
+ m.upcase
97
+ else
98
+ m
99
+ end
100
+ }
101
+ end
102
+ end
103
+
104
+ def current_adapter?(type)
105
+ ActiveRecord::ConnectionAdapters.const_defined?(type) &&
106
+ ActiveRecord::Base.connection.instance_of?(ActiveRecord::ConnectionAdapters.const_get(type))
107
+ end
108
+
109
+ ActiveRecord::Base.connection.class.class_eval do
110
+ cattr_accessor :query_count
111
+ alias_method :execute_without_query_counting, :execute
112
+ def execute_with_query_counting(sql, name = nil)
113
+ self.query_count += 1
114
+ execute_without_query_counting(sql, name)
115
+ end
116
+ end
117
+
118
+ ActiveRecord::Base.logger = Logger.new(ENV['CPK_LOGFILE'] || STDOUT)
@@ -1,27 +1,27 @@
1
- require 'yaml'
2
- require 'erb'
3
-
4
- module CompositePrimaryKeys
5
- class ConnectionSpec
6
- def self.[](adapter)
7
- config[adapter.to_s].dup
8
- end
9
-
10
- private
11
-
12
- def self.config
13
- @config ||= begin
14
- # Find the file location
15
- path = File.join(PROJECT_ROOT, 'test', 'connections', 'databases.yml')
16
-
17
- # Run any erb code
18
- template = ERB.new(File.read(path))
19
- project_root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
20
- data = template.result(binding)
21
-
22
- # And now to YAML
23
- YAML.load(data)
24
- end
25
- end
26
- end
27
- end
1
+ require 'yaml'
2
+ require 'erb'
3
+
4
+ module CompositePrimaryKeys
5
+ class ConnectionSpec
6
+ def self.[](adapter)
7
+ config[adapter.to_s].dup
8
+ end
9
+
10
+ private
11
+
12
+ def self.config
13
+ @config ||= begin
14
+ # Find the file location
15
+ path = File.join(PROJECT_ROOT, 'test', 'connections', 'databases.yml')
16
+
17
+ # Run any erb code
18
+ template = ERB.new(File.read(path))
19
+ project_root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
20
+ data = template.result(binding)
21
+
22
+ # And now to YAML
23
+ YAML.load(data)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,40 +1,40 @@
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
- ibm_db:
6
- database: ocdpdev
7
- username: db2inst1
8
- password: password
9
- host: localhost
10
-
11
- mysql:
12
- adapter: mysql2
13
- username: root
14
- password: mysql
15
- database: composite_primary_keys_unittest
16
-
17
- oracle:
18
- adapter: oracle_enhanced
19
- database: xe
20
- username: SYSTEM
21
- password: oracle
22
- host: localhost
23
-
24
- postgresql:
25
- adapter: postgresql
26
- database: composite_primary_keys_unittest
27
- username: postgres
28
- host: localhost
29
-
30
- sqlite:
31
- adapter: sqlite3
32
- database: <%= File.join(project_root, 'db', 'composite_primary_keys_unittest.sqlite') %>
33
-
34
- sqlserver:
35
- adapter: sqlserver
36
- username: cpk
37
- password: cpk
38
- database: composite_primary_keys_unittest
39
- host: localhost
40
- port: 1433
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
+ ibm_db:
6
+ database: ocdpdev
7
+ username: db2inst1
8
+ password: password
9
+ host: localhost
10
+
11
+ mysql:
12
+ adapter: mysql2
13
+ username: root
14
+ password: mysql
15
+ database: composite_primary_keys_unittest
16
+
17
+ oracle:
18
+ adapter: oracle_enhanced
19
+ database: xe
20
+ username: SYSTEM
21
+ password: oracle
22
+ host: localhost
23
+
24
+ postgresql:
25
+ adapter: postgresql
26
+ database: composite_primary_keys_unittest
27
+ username: postgres
28
+ host: localhost
29
+
30
+ sqlite:
31
+ adapter: sqlite3
32
+ database: <%= File.join(project_root, 'db', 'composite_primary_keys_unittest.sqlite') %>
33
+
34
+ sqlserver:
35
+ adapter: sqlserver
36
+ username: cpk
37
+ password: cpk
38
+ database: composite_primary_keys_unittest
39
+ host: localhost
40
+ port: 1433
@@ -1,39 +1,40 @@
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
- ibm_db:
6
- database: ocdpdev
7
- username: db2inst1
8
- password: password
9
- host: localhost
10
-
11
- mysql:
12
- adapter: mysql2
13
- username: root
14
- database: composite_primary_keys_unittest
15
-
16
- oracle:
17
- adapter: oracle_enhanced
18
- database: xe
19
- username: SYSTEM
20
- password: oracle
21
- host: localhost
22
-
23
- postgresql:
24
- adapter: postgresql
25
- database: composite_primary_keys_unittest
26
- username: postgres
27
- host: localhost
28
-
29
- sqlite:
30
- adapter: sqlite3
31
- database: <%= File.join(project_root, 'db', 'composite_primary_keys_unittest.sqlite') %>
32
-
33
- sqlserver:
34
- adapter: sqlserver
35
- username: cpk
36
- password: cpk
37
- database: composite_primary_keys_unittest
38
- host: localhost
39
- port: 1433
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
+ ibm_db:
6
+ database: ocdpdev
7
+ username: db2inst1
8
+ password: password
9
+ host: localhost
10
+
11
+ mysql:
12
+ adapter: mysql2
13
+ username: root
14
+ password: mysql
15
+ database: composite_primary_keys_unittest
16
+
17
+ oracle:
18
+ adapter: oracle_enhanced
19
+ database: xe
20
+ username: SYSTEM
21
+ password: oracle
22
+ host: localhost
23
+
24
+ postgresql:
25
+ adapter: postgresql
26
+ database: composite_primary_keys_unittest
27
+ username: postgres
28
+ host: localhost
29
+
30
+ sqlite:
31
+ adapter: sqlite3
32
+ database: <%= File.join(project_root, 'db', 'composite_primary_keys_unittest.sqlite') %>
33
+
34
+ sqlserver:
35
+ adapter: sqlserver
36
+ username: cpk
37
+ password: cpk
38
+ database: composite_primary_keys_unittest
39
+ host: localhost
40
+ port: 1433
@@ -1,10 +1,10 @@
1
- class Article < ActiveRecord::Base
2
- validates :id, uniqueness: true, numericality: true, allow_nil: true, allow_blank: true, on: :create
3
- has_many :readings, :dependent => :delete_all
4
- has_many :users, :through => :readings
5
-
6
- has_many :comments, :dependent => :delete_all
7
- has_many :employee_commentators, :through => :comments, :source => :person, :source_type => :employee
8
- has_many :user_commentators, :through => :comments, :source => :person, :source_type => "User"
9
- end
10
-
1
+ class Article < ActiveRecord::Base
2
+ validates :id, uniqueness: true, numericality: true, allow_nil: true, allow_blank: true, on: :create
3
+ has_many :readings, :dependent => :delete_all
4
+ has_many :users, :through => :readings
5
+
6
+ has_many :comments, :dependent => :delete_all
7
+ has_many :employee_commentators, :through => :comments, :source => :person, :source_type => :employee
8
+ has_many :user_commentators, :through => :comments, :source => :person, :source_type => "User"
9
+ end
10
+
@@ -1,8 +1,8 @@
1
- first:
2
- name: Article One
3
-
4
- second:
5
- name: Article Two
6
-
7
- third:
1
+ first:
2
+ name: Article One
3
+
4
+ second:
5
+ name: Article Two
6
+
7
+ third:
8
8
  name: Article Three
@@ -1,3 +1,3 @@
1
- class Capitol < ActiveRecord::Base
2
- self.primary_keys = :country, :city
3
- end
1
+ class Capitol < ActiveRecord::Base
2
+ self.primary_keys = :country, :city
3
+ end
@@ -1,16 +1,16 @@
1
- netherlands:
2
- country: The Netherlands
3
- city: Amsterdam
4
-
5
- france:
6
- country: France
7
- city: Paris
8
-
9
- canada:
10
- country: Canada
11
- city: Ottawa
12
-
13
- mexico:
14
- country: Mexico
15
- city: Mexico City
16
-
1
+ netherlands:
2
+ country: The Netherlands
3
+ city: Amsterdam
4
+
5
+ france:
6
+ country: France
7
+ city: Paris
8
+
9
+ canada:
10
+ country: Canada
11
+ city: Ottawa
12
+
13
+ mexico:
14
+ country: Mexico
15
+ city: Mexico City
16
+
@@ -1,5 +1,5 @@
1
- class Comment < ActiveRecord::Base
2
- belongs_to :person, :polymorphic => true
3
- belongs_to :article
4
- end
5
-
1
+ class Comment < ActiveRecord::Base
2
+ belongs_to :person, :polymorphic => true
3
+ belongs_to :article
4
+ end
5
+
@@ -1,17 +1,17 @@
1
- employee_comment:
2
- id: 1
3
- article: first
4
- person_id: 1
5
- person_type: Employee
6
-
7
- user_comment_1:
8
- id: 2
9
- article: second
10
- person_id: 1
11
- person_type: User
12
-
13
- user_comment_2:
14
- id: 3
15
- article: second
16
- person_id: 2
17
- person_type: User
1
+ employee_comment:
2
+ id: 1
3
+ article: first
4
+ person_id: 1
5
+ person_type: Employee
6
+
7
+ user_comment_1:
8
+ id: 2
9
+ article: second
10
+ person_id: 1
11
+ person_type: User
12
+
13
+ user_comment_2:
14
+ id: 3
15
+ article: second
16
+ person_id: 2
17
+ person_type: User
@@ -1,16 +1,16 @@
1
- class Department < ActiveRecord::Base
2
- self.primary_keys = :id, :location_id
3
-
4
- has_many :employees,
5
- # We intentionally redefine primary key for test purposes. #455
6
- :primary_key => [:id, :location_id],
7
- :foreign_key => [:department_id, :location_id]
8
-
9
- has_many :comments, :through => :employees
10
-
11
- has_one :head, :class_name => 'Employee', :autosave => true, :dependent => :delete,
12
- # We intentionally redefine primary key for test purposes. #455
13
- :primary_key => [:id, :location_id],
14
- :foreign_key => [:department_id, :location_id]
15
-
16
- end
1
+ class Department < ActiveRecord::Base
2
+ self.primary_keys = :id, :location_id
3
+
4
+ has_many :employees,
5
+ # We intentionally redefine primary key for test purposes. #455
6
+ :primary_key => [:id, :location_id],
7
+ :foreign_key => [:department_id, :location_id]
8
+
9
+ has_many :comments, :through => :employees
10
+
11
+ has_one :head, :class_name => 'Employee', :autosave => true, :dependent => :delete,
12
+ # We intentionally redefine primary key for test purposes. #455
13
+ :primary_key => [:id, :location_id],
14
+ :foreign_key => [:department_id, :location_id]
15
+
16
+ end
@@ -1,3 +1,3 @@
1
- class Dorm < ActiveRecord::Base
2
- has_many :rooms, -> {includes(:room_attributes)}, :primary_key => [:id]
1
+ class Dorm < ActiveRecord::Base
2
+ has_many :rooms, -> {includes(:room_attributes)}, :primary_key => [:id]
3
3
  end
@@ -1,5 +1,5 @@
1
- branner:
2
- id: 1
3
-
4
- toyon:
1
+ branner:
2
+ id: 1
3
+
4
+ toyon:
5
5
  id: 2
@@ -1,5 +1,5 @@
1
- class Employee < ActiveRecord::Base
2
- belongs_to :department, :foreign_key => [:department_id, :location_id]
3
- has_many :comments, :as => :person
4
- has_and_belongs_to_many :groups
5
- end
1
+ class Employee < ActiveRecord::Base
2
+ belongs_to :department, :foreign_key => [:department_id, :location_id]
3
+ has_many :comments, :as => :person
4
+ has_and_belongs_to_many :groups
5
+ end
@@ -1,3 +1,3 @@
1
- class Group < ActiveRecord::Base
2
- has_many :memberships
1
+ class Group < ActiveRecord::Base
2
+ has_many :memberships
3
3
  end
@@ -1,7 +1,7 @@
1
- cpk:
2
- id: 1
3
- name: Composite Primary Keys
4
-
5
- group2:
6
- id: 2
1
+ cpk:
2
+ id: 1
3
+ name: Composite Primary Keys
4
+
5
+ group2:
6
+ id: 2
7
7
  name: Grupo Dos