diff options
author | Rick Olson <technoweenie@gmail.com> | 2006-03-26 00:36:55 +0000 |
---|---|---|
committer | Rick Olson <technoweenie@gmail.com> | 2006-03-26 00:36:55 +0000 |
commit | 6636eb16c56a8a44be8fb3ec005cfca52b0b5b4c (patch) | |
tree | ae3597dd27b869e2e67c431f999c64dc168af0f7 /activerecord | |
parent | c3c39b5cb6756e68f6e84cb17bb691a2af7fea28 (diff) | |
download | rails-6636eb16c56a8a44be8fb3ec005cfca52b0b5b4c.tar.gz rails-6636eb16c56a8a44be8fb3ec005cfca52b0b5b4c.tar.bz2 rails-6636eb16c56a8a44be8fb3ec005cfca52b0b5b4c.zip |
Fixed issue that kept :select options from being scoped [Rick]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4036 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/associations/has_many_through_association.rb | 2 | ||||
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 4 | ||||
-rw-r--r-- | activerecord/test/associations_join_model_test.rb | 4 |
4 files changed, 9 insertions, 3 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 8831c64815..bba5fd93c3 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed issue that kept :select options from being scoped [Rick] + * Fixed db_schema_import when binary types are present #3101 [DHH] * Fixed that MySQL enums should always be returned as strings #3501 [DHH] diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb index 104ed5ba58..dafae89861 100644 --- a/activerecord/lib/active_record/associations/has_many_through_association.rb +++ b/activerecord/lib/active_record/associations/has_many_through_association.rb @@ -106,7 +106,7 @@ module ActiveRecord def construct_scope { - :find => { :from => construct_from, :conditions => construct_conditions, :joins => construct_joins }, + :find => { :from => construct_from, :conditions => construct_conditions, :joins => construct_joins, :select => construct_select }, :create => { @reflection.primary_key_name => @owner.id } } end diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index facb22c0e9..c58a7bf5c2 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -873,7 +873,7 @@ module ActiveRecord #:nodoc: method_scoping.assert_valid_keys([ :find, :create ]) if f = method_scoping[:find] - f.assert_valid_keys([ :conditions, :joins, :from, :offset, :limit, :readonly ]) + f.assert_valid_keys([ :conditions, :joins, :select, :from, :offset, :limit, :readonly ]) f[:readonly] = true if !f[:joins].blank? && !f.has_key?(:readonly) end @@ -980,7 +980,7 @@ module ActiveRecord #:nodoc: end def construct_finder_sql(options) - sql = "SELECT #{options[:select] || '*'} " + sql = "SELECT #{scope(:find, :select) || options[:select] || '*'} " sql << "FROM #{scope(:find, :from) || options[:from] || table_name} " add_joins!(sql, options) diff --git a/activerecord/test/associations_join_model_test.rb b/activerecord/test/associations_join_model_test.rb index 08b460995e..5f8ac7e0c0 100644 --- a/activerecord/test/associations_join_model_test.rb +++ b/activerecord/test/associations_join_model_test.rb @@ -316,6 +316,10 @@ class AssociationsJoinModelTest < Test::Unit::TestCase assert_equal new_author, authors(:david).reload.favorite_authors.first end + def test_has_many_through_uses_correct_attributes + assert_nil posts(:thinking).tags.find_by_name("General").attributes["tag_id"] + end + private # create dynamic Post models to allow different dependency options def find_post_with_dependency(post_id, association, association_name, dependency) |