Here's the problem.
1.9.2 defines a new way of handling method_missing/responds_to
responds_to_missing?
This seems to get called automatically and triggers the method_missing in
association_collection.
AssociationCollection calls "super" in method and passes it to
AssociationProxy which also triggers method_missing...
The first line of method_missing in AssociationProxy is load_target which
causes the extra DB load...
This is a workaround:
--- a/association_collection.rb 2010-10-20 13:22:58.629947001 -0400
+++ b/association_collection.rb 2010-10-20 13:22:54.509947004 -0400
@@ -390,7 +390,7 @@
if block_given?
super { |*block_args| yield(*block_args) }
else
- super
+ super unless method.to_s == "respond_to_missing?"
end
elsif @reflection.klass.scopes.include?(method)
@reflection.klass.scopes[method].call(self, *args)
On Tue, Oct 19, 2010 at 5:37 PM, Stephen <[email protected]> wrote:
> Yes yes, thats what I meant =) Ruby 1.9.2 and Rails 2.3.9 it causes a
> double query. Under Ruby 1.9.1p243 and Rails 2.3.9 it correctly only
> does the count query.
>
> I found a bug for it in Lighthouse although no solutions.....
>
> https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/5410-multiple-database-queries-when-chaining-named-scopes-with-rails-238-and-ruby-192#ticket-5410-2
>
>
>
> On Oct 19, 5:21 pm, Marnen Laibow-Koser <[email protected]> wrote:
> > Stephen wrote in post #955565:> Group
> > > has_many :topics, :as => :discussable (via a module)
> >
> > > Topic
> > > belongs_to :discussable, :polymorphic => true
> > > named_scope :unhidden, { :conditions => ['hidden = ?', false] }
> >
> > > Under rails 1.9.2
> >
> > [...]
> >
> > There is no such version. Do you mean Ruby 1.9.2? And with what
> > version of Rails?
> >
> > Best,
> > --
> > Marnen Laibow-Koserhttp://www.marnen.org
> > [email protected]
> >
> > --
> > Posted viahttp://www.ruby-forum.com/.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<rubyonrails-talk%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.