activerecord 2.3.4 → 2.3.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- data/CHANGELOG +8 -0
- data/Rakefile +1 -1
- data/lib/active_record/associations.rb +10 -7
- data/lib/active_record/associations/association_proxy.rb +7 -8
- data/lib/active_record/associations/has_and_belongs_to_many_association.rb +2 -2
- data/lib/active_record/associations/has_one_association.rb +9 -0
- data/lib/active_record/autosave_association.rb +32 -23
- data/lib/active_record/base.rb +7 -0
- data/lib/active_record/connection_adapters/mysql_adapter.rb +6 -2
- data/lib/active_record/fixtures.rb +1 -1
- data/lib/active_record/locking/optimistic.rb +0 -33
- data/lib/active_record/locking/pessimistic.rb +0 -22
- data/lib/active_record/nested_attributes.rb +101 -38
- data/lib/active_record/validations.rb +35 -35
- data/lib/active_record/version.rb +1 -1
- data/lib/activerecord.rb +1 -0
- data/test/cases/associations/has_many_associations_test.rb +12 -0
- data/test/cases/associations/has_many_through_associations_test.rb +22 -0
- data/test/cases/associations/has_one_associations_test.rb +21 -0
- data/test/cases/autosave_association_test.rb +230 -11
- data/test/cases/base_test.rb +2 -0
- data/test/cases/connection_test_mysql.rb +8 -0
- data/test/cases/fixtures_test.rb +2 -2
- data/test/cases/locking_test.rb +0 -18
- data/test/cases/nested_attributes_test.rb +109 -37
- data/test/cases/reflection_test.rb +3 -3
- data/test/cases/validations_i18n_test.rb +8 -0
- data/test/cases/validations_test.rb +37 -9
- data/test/fixtures/accounts.yml +1 -0
- data/test/fixtures/fixture_database.sqlite3 +0 -0
- data/test/fixtures/fixture_database_2.sqlite3 +0 -0
- data/test/models/company.rb +10 -0
- data/test/models/pirate.rb +9 -2
- data/test/models/treasure.rb +2 -0
- data/test/schema/mysql_specific_schema.rb +12 -0
- data/test/schema/schema.rb +1 -0
- metadata +4 -4
data/test/fixtures/accounts.yml
CHANGED
Binary file
|
Binary file
|
data/test/models/company.rb
CHANGED
@@ -64,6 +64,8 @@ class Firm < Company
|
|
64
64
|
has_many :readonly_clients, :class_name => 'Client', :readonly => true
|
65
65
|
has_many :clients_using_primary_key, :class_name => 'Client',
|
66
66
|
:primary_key => 'name', :foreign_key => 'firm_name'
|
67
|
+
has_many :clients_using_primary_key_with_delete_all, :class_name => 'Client',
|
68
|
+
:primary_key => 'name', :foreign_key => 'firm_name', :dependent => :delete_all
|
67
69
|
has_many :clients_grouped_by_firm_id, :class_name => "Client", :group => "firm_id", :select => "firm_id"
|
68
70
|
has_many :clients_grouped_by_name, :class_name => "Client", :group => "name", :select => "name"
|
69
71
|
|
@@ -72,7 +74,14 @@ class Firm < Company
|
|
72
74
|
has_one :account_with_select, :foreign_key => "firm_id", :select => "id, firm_id", :class_name=>'Account'
|
73
75
|
has_one :readonly_account, :foreign_key => "firm_id", :class_name => "Account", :readonly => true
|
74
76
|
has_one :account_using_primary_key, :primary_key => "firm_id", :class_name => "Account"
|
77
|
+
has_one :account_using_foreign_and_primary_keys, :foreign_key => "firm_name", :primary_key => "name", :class_name => "Account"
|
75
78
|
has_one :deletable_account, :foreign_key => "firm_id", :class_name => "Account", :dependent => :delete
|
79
|
+
|
80
|
+
has_one :account_limit_500_with_hash_conditions, :foreign_key => "firm_id", :class_name => "Account", :conditions => { :credit_limit => 500 }
|
81
|
+
|
82
|
+
has_one :unautosaved_account, :foreign_key => "firm_id", :class_name => 'Account', :autosave => false
|
83
|
+
has_many :accounts
|
84
|
+
has_many :unautosaved_accounts, :foreign_key => "firm_id", :class_name => 'Account', :autosave => false
|
76
85
|
end
|
77
86
|
|
78
87
|
class DependentFirm < Company
|
@@ -136,6 +145,7 @@ end
|
|
136
145
|
|
137
146
|
class Account < ActiveRecord::Base
|
138
147
|
belongs_to :firm
|
148
|
+
belongs_to :unautosaved_firm, :foreign_key => "firm_id", :class_name => "Firm", :autosave => false
|
139
149
|
|
140
150
|
def self.destroyed_account_ids
|
141
151
|
@destroyed_account_ids ||= Hash.new { |h,k| h[k] = [] }
|
data/test/models/pirate.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
class Pirate < ActiveRecord::Base
|
2
|
-
belongs_to :parrot
|
3
|
-
|
2
|
+
belongs_to :parrot, :validate => true
|
3
|
+
belongs_to :non_validated_parrot, :class_name => 'Parrot'
|
4
|
+
has_and_belongs_to_many :parrots, :validate => true
|
5
|
+
has_and_belongs_to_many :non_validated_parrots, :class_name => 'Parrot'
|
4
6
|
has_and_belongs_to_many :parrots_with_method_callbacks, :class_name => "Parrot",
|
5
7
|
:before_add => :log_before_add,
|
6
8
|
:after_add => :log_after_add,
|
@@ -17,6 +19,7 @@ class Pirate < ActiveRecord::Base
|
|
17
19
|
|
18
20
|
# These both have :autosave enabled because accepts_nested_attributes_for is used on them.
|
19
21
|
has_one :ship
|
22
|
+
has_one :non_validated_ship, :class_name => 'Ship'
|
20
23
|
has_many :birds
|
21
24
|
has_many :birds_with_method_callbacks, :class_name => "Bird",
|
22
25
|
:before_add => :log_before_add,
|
@@ -40,6 +43,10 @@ class Pirate < ActiveRecord::Base
|
|
40
43
|
@ship_log ||= []
|
41
44
|
end
|
42
45
|
|
46
|
+
def reject_empty_ships_on_create(attributes)
|
47
|
+
attributes.delete('_reject_me_if_new').present? && new_record?
|
48
|
+
end
|
49
|
+
|
43
50
|
private
|
44
51
|
def log_before_add(record)
|
45
52
|
log(record, "before_adding_method")
|
data/test/models/treasure.rb
CHANGED
@@ -9,4 +9,16 @@ ActiveRecord::Schema.define do
|
|
9
9
|
t.text :medium_text, :limit => 16777215
|
10
10
|
t.text :long_text, :limit => 2147483647
|
11
11
|
end
|
12
|
+
|
13
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
14
|
+
DROP PROCEDURE IF EXISTS ten;
|
15
|
+
SQL
|
16
|
+
|
17
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
18
|
+
CREATE PROCEDURE ten() SQL SECURITY INVOKER
|
19
|
+
BEGIN
|
20
|
+
select 10;
|
21
|
+
END
|
22
|
+
SQL
|
23
|
+
|
12
24
|
end
|
data/test/schema/schema.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
@@ -9,7 +9,7 @@ autorequire: active_record
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-27 00:00:00 +13:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 2.3.
|
23
|
+
version: 2.3.5
|
24
24
|
version:
|
25
25
|
description: Implements the ActiveRecord pattern (Fowler, PoEAA) for ORM. It ties database tables and classes together for business objects, like Customer or Subscription, that can find, save, and destroy themselves without resorting to manual SQL.
|
26
26
|
email: david@loudthinking.com
|
@@ -390,7 +390,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
390
390
|
requirements: []
|
391
391
|
|
392
392
|
rubyforge_project: activerecord
|
393
|
-
rubygems_version: 1.3.
|
393
|
+
rubygems_version: 1.3.5
|
394
394
|
signing_key:
|
395
395
|
specification_version: 3
|
396
396
|
summary: Implements the ActiveRecord pattern for ORM.
|