Джон Руби прав, что вам нужно включить идентификатор объекта в выборку.
Кроме того, вам редко нужно использовать опцию: select. Вы можете сделать это с помощью объединений, или если есть реальная проблема с производительностью при выборе всей строки, но это не так уж и много.
И вам действительно не нужно устанавливать все эти переменные в экземпляры vars (@). @user в цикле может быть локальной переменной. Если вам нужны все пользователи как @users, вы можете сделать:
@users = User.find(:all, :select => "id, name, lastname, salary")
@users.each do |user|
user.salary = 10000
user.save
end
Возможно, вы также захотите посмотреть на update_all ActiveRecord для простых изменений. Но учтите, что это не вызывает никаких обратных вызовов сохранения.