Sorting by subsidiary class


#1

Hi all,

My app contains categories, service and discounts.

A category has_many :services
A service belongs_to :category and has_one discount
A discount belongs_to :service

On each category show page I list all of the associated services, but
would like to order them by some of the entries in the discount
table.

i.e. in my categories controller

@category = Category.find(params[:id])
@services=Service.find(:all, :order => "XXXXXXX", :conditions =>

[‘category_id = ?’, @category.id])

where XXXX relates to one of the columns in the discount table. The
column gives the % discount available stored as an integer field.

Any ideas on best practice here,

I thought I could write a method into the Service.rb model file but
although I can call the value easily I can’t order by the entry.

def reduction
return discount.percentage
end

All help appreciated.

Dan C


#2

@category = Category.find(params[:id])
@services=Service.find(:all, :order => “XXXXXXX”, :conditions =>
[‘category_id = ?’, @category.id])

@category = Category.find(params[:id])
@category.services.sort! { |x, y| x.reduction <=> y.reduction }


#3

On Feb 22, 3:48 pm, DanC removed_email_address@domain.invalid wrote:

i.e. in my categories controller

@category = Category.find(params[:id])
@services=Service.find(:all, :order => "XXXXXXX", :conditions =>

[‘category_id = ?’, @category.id])

If you join the discounts table you can just order by
discounts.percentage

Fred