views:

11

answers:

1

How can I include a :select clause with find_in_batches. The following throws an error " Mysql::Error: Unknown column 'users.id' in 'field list': .

Post.find_in_batches(:batch_size => 100, :select => "users.id, users.name, categories.name, posts.id", :include => [:user, :category]) do |group|
#stuff with group
end
A: 

Your life with Rails will be much easier if you just retrieve all of the fields for each model queried, like so:

Post.find_in_batches(:batch_size => 100, :include => [:user, :category]) do |post|
   u = post.user
   c = post.category
   # do stuff
end

A trimmed select list, as in your question, provides a limited DB performance improvement, but in most cases not enough to be worth the clunkier code.

marshally