From the OP's message....
"This has reached stability and now works with eager loading and scopings," On 8/5/06, Blake Watters <[EMAIL PROTECTED]> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 The other thing that occurs to me is that I can imagine wanting :having to be subject to scoping. Most of my most interesting queries these days are coming from nested scopes. Backpacking onto :group may make this non-trivial, where adding a :having option and threading it through the Active Record plumbing would let you work more naturally: Article.with_scope(:find => { :conditions => "blog_id = 1", :having => 'count(tags.id) > 0', :include => 'tags'}) do Article.with_scope(:find => { :having => 'count(categories.id) = #{category_list.size}', :conditions => ['categories.id IN (?)', category_list], :include => :categories } Article.find(:all, :group => 'articles.id)) # => SELECT * from articles AND categories.id IN (1, 2, 3, 4, 5) LEFT JOIN categories on categories.id WHERE blog_id = 1 GROUP BY articles.id HAVING count (categories.id) = 5 end end On Aug 5, 2006, at 1:28 PM, Blake Watters wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Interesting. The queries I'm generating get pretty nasty and > there's something to be said for the symmetry offered by a key in > the options and documentation, etc. I can probably unwind > the :having stuff I've done and glue it all onto the :group clause > if I'm one of the few people who care about it and use it, but it > makes my OCD twitch a little. But I can always leave the :having > hackery I've added to my query generation stuff tucked away in my > lib/ to allay my cleanliness obsession. > > I think this is a relatively low hanging add, but its pointless for > me to toil away extracting in into a patch if nobody cares or wants > the extra key. > > On Aug 5, 2006, at 12:08 PM, Josh Susser wrote: > >> >> On Aug 4, 2006, at 11:19 PM, Blake Watters wrote: >>> I have recently needed support for having clauses for some >>> advanced find queries in my application. I've implemented this in >>> a mixin that implements a new set of finders and query >>> constructors that mirror the core Active Record, except for the >>> additional support for :having as an argument. This has reached >>> stability and now works with eager loading and scopings, so I'd >>> like to extract it from my application as a patch against Active >>> Record core. >> >> I'm using HAVING just fine already. Just append the HAVING clause >> to the end of the :group option. >> >> find(:all, :readonly => false, >> :select => "articles.*", >> :joins => "INNER JOIN taggings t ON articles.id = t.article_id", >> :conditions => ["t.tag_id IN (?)", tag_list], :order => order, >> :group => "articles.id HAVING COUNT(articles.id) = # >> {tag_list.size}") >> >> Is there something you're using HAVING for that needs more >> flexibility than that? >> >> -- >> Josh Susser >> http://blog.hasmanythrough.com >> >> >> _______________________________________________ >> Rails-core mailing list >> Rails-core@lists.rubyonrails.org >> http://lists.rubyonrails.org/mailman/listinfo/rails-core > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.3 (Darwin) > > iD8DBQFE1NU8qvuZB2zXNU0RAqJNAJwOdTBIeiwoTY3ENT27a8wkz/BJzwCg0D+n > OMV6NuOoxgjEB6yGwJUyuY4= > =ihXG > -----END PGP SIGNATURE----- > _______________________________________________ > Rails-core mailing list > Rails-core@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails-core -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (Darwin) iD8DBQFE1NnbqvuZB2zXNU0RAgGgAJoDfjC+KOMp18OTdvQP9BsCBcIkBACgz2Tc +FWx02MUovgenC12/ZO6QHo= =dfcH -----END PGP SIGNATURE----- _______________________________________________ Rails-core mailing list Rails-core@lists.rubyonrails.org http://lists.rubyonrails.org/mailman/listinfo/rails-core
_______________________________________________ Rails-core mailing list Rails-core@lists.rubyonrails.org http://lists.rubyonrails.org/mailman/listinfo/rails-core