Forum: Ruby on Rails Help with sorting / ordering

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Robert S. (Guest)
on 2009-03-13 23:40
Hi! I hope someone can offer some insight or direction into a problem
I'm having.

In my application, I have two tables: products and reviews.

- Products stores information on things that are sold
- Reviews store comments from users that purchased the product, as well
as boolean field about if they would purchase again.

The models are setup so that products has_many reviews and reviews
belong_to their respective products.

So my question is this:
How can I structure a query so that I can order products based on the
number of people who would purchase it again?

It'd be alot easier for me, and probably my server, if I just kept a
running count of those in the actual product record, but I'm trying to
keep it dynamic so that I can create custom reviewer sets elsewhere.

Thanks in advance for any direction.
Tom Z Meinlschmidt (Guest)
on 2009-03-13 23:54
(Received via mailing list)
easiest and fastest way is to keep number of reviews in column in
product table... then simple add :order => 'reviews_count desc' in your
Product.find()

tom

Robert S. wrote:
> belong_to their respective products.
>
> So my question is this:
> How can I structure a query so that I can order products based on the
> number of people who would purchase it again?
>
> It'd be alot easier for me, and probably my server, if I just kept a
> running count of those in the actual product record, but I'm trying to
> keep it dynamic so that I can create custom reviewer sets elsewhere.
>
> Thanks in advance for any direction.


--
===============================================================================
Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache

www.meinlschmidt.com  www.maxwellrender.cz  www.lightgems.cz
===============================================================================
Robert S. (Guest)
on 2009-03-14 00:13
Right, but that approach also means that I will be using all reviews for
all users.

The only reason I'm going through the hassle of trying to make it
dynamic is so that I could further segment the reviewers. So instead of
saying X reviewers would buy it again, I could get closer to X reviewers
in your age group would buy it again or X reviewers in your area, etc.
etc.




Tom Z Meinlschmidt wrote:
> easiest and fastest way is to keep number of reviews in column in
> product table... then simple add :order => 'reviews_count desc' in your
> Product.find()
>
> tom
>
> Robert S. wrote:
>> belong_to their respective products.
>>
>> So my question is this:
>> How can I structure a query so that I can order products based on the
>> number of people who would purchase it again?
>>
>> It'd be alot easier for me, and probably my server, if I just kept a
>> running count of those in the actual product record, but I'm trying to
>> keep it dynamic so that I can create custom reviewer sets elsewhere.
>>
>> Thanks in advance for any direction.
>
>
> --
> ===============================================================================
> Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache
>
> www.meinlschmidt.com  www.maxwellrender.cz  www.lightgems.cz
> ===============================================================================
Tom Z Meinlschmidt (Guest)
on 2009-03-14 00:21
(Received via mailing list)
OK. so then you need to create your own queries with
Reviews.find_by_sql() and insert appropriate sql statement, eg

select product_id, count(*) as counter from reviews where age between
(10,20) and ... order by 2 desc

tom

Robert S. wrote:
>
>>>
>> --
>> ===============================================================================
>> Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache
>>
>> www.meinlschmidt.com  www.maxwellrender.cz  www.lightgems.cz
>> ===============================================================================
>


--
===============================================================================
Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache

www.meinlschmidt.com  www.maxwellrender.cz  www.lightgems.cz
===============================================================================
Kaspars Bankovskis (Guest)
on 2009-03-14 14:44
(Received via mailing list)
and don't forget to add to reviews model:
belongs_to :product, :counter_cache => true

On Mar 13, 11:51 pm, Tom Z Meinlschmidt <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.