aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2013-09-25 12:06:04 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2013-09-25 16:31:00 -0300
commitfdc3c08e55dff879f154eef6dc6227ca3b50e2de (patch)
tree2d94735be39fe6f7ff89907346e9f75e40b7242c /activerecord/test
parentc539c684aa0fc08769304746e1702aa1b4ddd4c8 (diff)
downloadrails-fdc3c08e55dff879f154eef6dc6227ca3b50e2de.tar.gz
rails-fdc3c08e55dff879f154eef6dc6227ca3b50e2de.tar.bz2
rails-fdc3c08e55dff879f154eef6dc6227ca3b50e2de.zip
Merge pull request #12359 from arthurnn/inverse_on_callbacks
Make sure inverse_of is visible on the has_many callbacks Conflicts: activerecord/CHANGELOG.md activerecord/test/models/company.rb
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/associations/has_many_associations_test.rb7
-rw-r--r--activerecord/test/models/company.rb6
2 files changed, 12 insertions, 1 deletions
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb
index d94f5d3207..0a35012e67 100644
--- a/activerecord/test/cases/associations/has_many_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_associations_test.rb
@@ -653,6 +653,13 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
end
end
+ def test_inverse_on_before_validate
+ firm = companies(:first_firm)
+ assert_queries(1) do
+ firm.clients_of_firm << Client.new("name" => "Natural Company")
+ end
+ end
+
def test_new_aliased_to_build
company = companies(:first_firm)
new_client = assert_no_queries { company.clients_of_firm.new("name" => "Another Client") }
diff --git a/activerecord/test/models/company.rb b/activerecord/test/models/company.rb
index f8e259fdfe..b6b2823978 100644
--- a/activerecord/test/models/company.rb
+++ b/activerecord/test/models/company.rb
@@ -44,7 +44,7 @@ class Firm < Company
has_many :unsorted_clients, :class_name => "Client"
has_many :unsorted_clients_with_symbol, :class_name => :Client
has_many :clients_sorted_desc, :class_name => "Client", :order => "id DESC"
- has_many :clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :order => "id"
+ has_many :clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :order => "id", :inverse_of => :firm
has_many :clients_ordered_by_name, :order => "name", :class_name => "Client"
has_many :unvalidated_clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :validate => false
has_many :dependent_clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :order => "id", :dependent => :destroy
@@ -126,6 +126,10 @@ class Client < Company
has_many :accounts, :through => :firm
belongs_to :account
+ validate do
+ firm
+ end
+
class RaisedOnSave < RuntimeError; end
attr_accessor :raise_on_save
before_save do