Yikes! Not like that; what if one of the words is "thewordlist"
Word.find(:all) will return something that acts like an Array
@word_counts = {}
Word.find(:all).each do |w|
@word_counts[w.word] = Publicsurvey.count(:conditions => ["word LIKE ?", w.word])
end
Then you can process the @word_counts hash however you like.
It seems like you could push the work off to the database with something like the following if the words don't have any wildcards in them that would cause LIKE to give a result different that just =.
sql = <<-END
SELECT words.word, count(publicsurveys.id) as 'count'
FROM words LEFT OUTER JOIN publicsurveys ON publicsurvey.word = words.word
GROUP BY words.word
END
@word_counts = {}
Word.connection.select_all(sql).each {|rowhash| @word_counts[rowhash['word']] = rowhash['count']}
-Rob
Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com