Make habtm respect the :select option. Closes #9207. [Aleksey Kondratenko]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7279 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Michael Koziarski 2007-08-07 09:53:33 +00:00
parent bb94ce92fc
commit d4bf5e9b34
3 changed files with 15 additions and 1 deletions

View File

@ -53,7 +53,6 @@ module ActiveRecord
options[:conditions] = conditions
options[:joins] = @join_sql
options[:readonly] = finding_with_ambigious_select?(options[:select])
options[:select] ||= '*'
if options[:order] && @reflection.options[:order]
options[:order] = "#{options[:order]}, #{@reflection.options[:order]}"
@ -63,6 +62,8 @@ module ActiveRecord
merge_options_from_reflection!(options)
options[:select] ||= '*'
# Pass through args exactly as we received them.
args << options
@reflection.klass.find(*args)

View File

@ -1761,6 +1761,13 @@ class HasAndBelongsToManyAssociationsTest < Test::Unit::TestCase
assert welcome.save!
end
def test_habtm_respects_select
categories(:technology).select_testing_posts(true).each do |o|
assert_respond_to o, :correctness_marker
end
assert_respond_to categories(:technology).select_testing_posts.find(:first), :correctness_marker
end
def test_updating_attributes_on_rich_associations
david = projects(:action_controller).developers.first
david.name = "DHH"

View File

@ -3,6 +3,12 @@ class Category < ActiveRecord::Base
has_and_belongs_to_many :special_posts, :class_name => "Post"
has_and_belongs_to_many :other_posts, :class_name => "Post"
has_and_belongs_to_many(:select_testing_posts,
:class_name => 'Post',
:foreign_key => 'category_id',
:association_foreign_key => 'post_id',
:select => 'posts.*, 1 as correctness_marker')
def self.what_are_you
'a category...'
end