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:
parent
bb94ce92fc
commit
d4bf5e9b34
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue