Searching and comparing ActiveRecord attributes to find largest value

Posted by NS on Stack Overflow See other posts from Stack Overflow or by NS
Published on 2010-05-04T03:44:47Z Indexed on 2010/05/04 3:48 UTC
Read the original article Hit count: 182

Filed under:
|

I have a model that would look something like:

my_diet = Diet.new
my_diet.food_type_1 = "beef"
my_diet.food_type_1_percentage = 40
my_diet.food_type_2 = "carrots"
my_diet.food_type_2_percentage = 50
my_diet.food_type_3 = "beans"
my_diet.food_type_3_percentage = 5
my_diet.food_type_4 = "chicken"
my_diet.food_type_4_percentage = 5

I need to find which food_type has the highest percentage. So far I've tried creating a hash out of the attibutes and percentages then sorting the hash (see below) but it feels like there must be a cleaner way to do it.

  food_type_percentages = { :food_type_1 => my_diet.foo_type_percentage_1_percentage.nil? ? 0 : my_dient.food_type_1_percentage,
                            :food_type_2 => my_diet.foo_type_percentage_2_percentage.nil? ? 0 : my_dient.food_type_2_percentage,
                            :food_type_3 => my_diet.foo_type_percentage_3_percentage.nil? ? 0 : my_dient.food_type_3_percentage,
                            :food_type_4 => my_diet.foo_type_percentage_4_percentage.nil? ? 0 : my_dient.food_type_4_percentage
  }
  food_type_percentages.sort {|a,b| a[1]<=>b[1]}.last

Any ideas?

Thanks!

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about ruby