Browse files

Make sure with_scope takes both :select and :joins into account when …

…setting :readonly. Allows you to save records you retrieve using finders on a has_many :through associations. [Koz]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6413 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent f770165 commit 5bd116ccf4e341b25dbba418b6c5f0ed3b0c5187 @NZKoz NZKoz committed Mar 13, 2007
Showing with 13 additions and 1 deletion.
  1. +2 −0 activerecord/CHANGELOG
  2. +1 −1 activerecord/lib/active_record/base.rb
  3. +10 −0 activerecord/test/associations_test.rb
View
2 activerecord/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Make sure with_scope takes both :select and :joins into account when setting :readonly. Allows you to save records you retrieve using method_missing on a has_many :through associations. [Koz]
+
* Allow a polymorphic :source for has_many :through associations. Closes #7143 [protocool]
* Consistent public/protected/private visibility for chained methods. #7813 [Dan Manges]
View
2 activerecord/lib/active_record/base.rb
@@ -938,7 +938,7 @@ def with_scope(method_scoping = {}, action = :merge, &block)
if f = method_scoping[:find]
f.assert_valid_keys([ :conditions, :joins, :select, :include, :from, :offset, :limit, :order, :readonly, :lock ])
- f[:readonly] = true if !f[:joins].blank? && !f.has_key?(:readonly)
+ set_readonly_option! f
end
# Merge scopings
View
10 activerecord/test/associations_test.rb
@@ -10,6 +10,8 @@
require 'fixtures/category'
require 'fixtures/post'
require 'fixtures/author'
+require 'fixtures/tag'
+require 'fixtures/tagging'
class AssociationsTest < Test::Unit::TestCase
@@ -1855,4 +1857,12 @@ def test_select_limited_ids_list
projects = Project.send(:select_limited_ids_list, {:order => 'developers.created_at'}, join_dep)
assert_equal %w(1 2), projects.scan(/\d/).sort
end
+
+ def test_scoped_find_on_through_association_doesnt_return_read_only_records
+ tag = Post.find(1).tags.find_by_name("General")
+
+ assert_nothing_raised do
+ tag.save!
+ end
+ end
end

0 comments on commit 5bd116c

Please sign in to comment.