diff options
author | Lauro Caetano <laurocaetano1@gmail.com> | 2014-04-02 19:27:55 -0300 |
---|---|---|
committer | Lauro Caetano <laurocaetano1@gmail.com> | 2014-04-03 10:26:37 -0300 |
commit | db5d26c9d70fb72b8aa3ea98709224dd13800024 (patch) | |
tree | 418418b89857527e834399ee5d57fc47225c858c /activerecord/test/cases/associations | |
parent | 7531404a4401eb649daf274430c79ad7db6aaf9d (diff) | |
download | rails-db5d26c9d70fb72b8aa3ea98709224dd13800024.tar.gz rails-db5d26c9d70fb72b8aa3ea98709224dd13800024.tar.bz2 rails-db5d26c9d70fb72b8aa3ea98709224dd13800024.zip |
Fix error when using `with_options` with lambda.
It was causing error when using `with_options` passing a lambda as its
last argument.
class User < ActiveRecord::Base
with_options dependent: :destroy do |assoc|
assoc.has_many :profiles, -> { where(active: true) }
end
end
It was happening because the `option_merger` was taking the last
argument and checking if it was a Hash. This breaks the HasMany usage,
because its last argument can be a Hash or a Proc.
As the behavior described in this test:
https://github.com/rails/rails/blob/master/activesupport/test/option_merger_test.rb#L69
the method will only accept the lambda, this way it will keep the expected behavior. See 9eaa0a34
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r-- | activerecord/test/cases/associations/has_many_associations_test.rb | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb index 3dfb0a27ba..eb0ebc75ad 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -24,6 +24,8 @@ require 'models/minivan' require 'models/speedometer' require 'models/reference' require 'models/job' +require 'models/college' +require 'models/student' class HasManyAssociationsTestForReorderWithJoinDependency < ActiveRecord::TestCase fixtures :authors, :posts, :comments @@ -65,6 +67,13 @@ class HasManyAssociationsTest < ActiveRecord::TestCase dev.developer_projects.map(&:project_id).sort end + def test_has_many_build_with_options + college = College.create(name: 'UFMT') + student = Student.create(active: true, college_id: college.id, name: 'Sarah') + + assert_equal college.students, Student.where(active: true, college_id: college.id) + end + def test_create_from_association_should_respect_default_scope car = Car.create(:name => 'honda') assert_equal 'honda', car.name |