find(:all) that works when called by regular view but not rss builder

I have an index page that displays the newest contents of a table
called ratings. The controller code looks like this:

   1. def index
   2. @newest_ratings = Rating.find(:all, :order => "twitter_num
DESC", :limit => 20)
   3.
   4. # . . . some other code . . .
   5.
   6. respond_to do |format|
   7. format.html
   8. format.rss {render :layout => false}
   9. end
  10. end

This works when I load index.html.erb, but when I try to load
index.rss.builder, it just downloads an error page instead of an rss
feed. When I check the log, this is the error:

    ActiveRecord::StatementInvalid (Mysql::Error: Table
'twitterate.ratings' doesn't exist: SELECT * FROM `ratings` ORDER
BY twitter_num DESC LIMIT 20):

This doesn't make sense to me; how can it not realize that the table
exists when it queries from it just fine when the same controller code
is called from the other view template? To make it even weirder, I
have a nearly identical setup with the 'show' method (does the same
thing but for a single user) and it works fine when generating the rss.