looping through results of complex query

Hello,    I have a postgresql join query that returns all the correct values on command line but when I try to loop through the results in a view, I can't access all the fields.

Specifically, I'm trying to display the fields in the rations table and can't seem to print them out to save my life.

Here's the query:

[code] @herd_rations_during_season = HerdRation.find(:all,         :joins => ["INNER JOIN seasons ON seasons.herd_id = herd_rations.herd_id AND seasons.season_start_date >= herd_rations.grazing_begun AND herd_rations.grazing_end <= seasons.season_end_date INNER JOIN rations ON rations.id = herd_rations.ration_id"],           :select=>'DISTINCT ON (herd_rations.id) herd_rations.id, herd_rations.grazing_begun, herd_rations.grazing_end, seasons.season_name, seasons.season_start_date, seasons.season_end_date, rations.ration_name',           :conditions => ["herd_rations.herd_id=?", params[:id]])

@herd_rations_during_season.each do |herd_ration|   puts("----herd_ration: #{herd_ration.ration}") #prints nil   puts("----grazing_begun: #{herd_ration.grazing_begun}") #good   puts("---- grazing_end: #{herd_ration.grazing_end}") #good end [/code]

Thanks for any help!

Probably because in your select clause, you aren’t selecting herd_rations.ration

solved the problem and feel a bit stupid but, at the same time not.

I accessed ration.ration_name by simply doing this in my loop:

[code] herd_ration.ration_name [/code]

The part I'm not understanding, is that when I used inspect in the loop, it did not display any reference to to ration.ration_name:

[code] @herd_rations_during_season.each do |herd_ration|   puts("----herd_ration: #{herd_ration.inspect}") #doesn't display ration_name anywhere end [/code]

Chirag Singhal wrote:

solved the problem and feel a bit stupid but, at the same time not.

I accessed ration.ration_name by simply doing this in my loop:

[code] herd_ration.ration_name [/code]

The part I'm not understanding, is that when I used inspect in the loop, it did not display any reference to to ration.ration_name:

inspect by design only shows columns from the model's table, no matter what other stuff you may have put in the select clause

Fred

appreciate your reply Fred - you are always a great help!

Frederick Cheung-2 wrote:

For anyone that's interested .... You can inspect the model's current attributes to see that additional data that was added in your custom query:

  ...   puts("----herd_ration: #{herd_ration.attributes.inspect}")   ...

Jeff