Лучший способ - выполнить один SQL-запрос, извлекая поля с такими условиями. Например:
@users = User.all(select => "city,state,last_name,first_name,…", :limit => 100)
Теперь у вас есть все столбцы. Итак, вы переходите к:
@usersSet1 = @users.select{|a| a.state == 'Charlotte' && a.state == 'NC') #pulls back users in Charlotte
@usersSet2 = @users.select{|b| b.last_name == 'Smith' } #pulls back users that have the last name of Smith.
@usersSet3 = @users.select{|b| b.first_name == ('John' || 'Joe') } #pulls back users that have the first name of John or Joe.
И так далее ... Это, на мой взгляд, гораздо более масштабируемо.