У меня есть таблица
create table foos
(
id int,
bar varchar(1),
var int
)
и соответствующий класс модели
class Foo < ApplicationRecord
self.table_name = "foos"
end
Я заполняю таблицу непосредственно с помощью консоли ruby ./script/rails console
, как следует
Foo.new(:id => 1, :bar => "x", :var => 2).save
Foo.new(:id => 2, :bar => "y", :var => 2).save
Foo.new(:id => 3, :bar => "z", :var => 3).save
Если я распечатываю записи с Foo.all
, я получаю этот заказ
#<ActiveRecord::Relation [
#<Foo id: 1, bar: "x", var: 2>,
#<Foo id: 2, bar: "y", var: 2>,
#<Foo id: 3, bar: "z", var: 3>]>
Если я запрашиваю select * from foos
в базе данных, я получаю такой же заказ
id bar var
-------------
1 x 2
2 y 2
3 z 3
Тогда яобновите столбец bar
для каждой записи, которая var
равна 2
значением a
Foo.where(:var => 2).update_all(:bar => "a")
Если я снова распечатаю записи, я получу другой заказ
#<ActiveRecord::Relation [
#<Foo id: 3, bar: "z", var: 3>,
#<Foo id: 1, bar: "a", var: 2>,
#<Foo id: 2, bar: "a", var: 2>]>
Также, если я запрашиваю select * from foos
в базе данных
id bar var
-------------
3 z 3
1 a 2
2 a 2
Есть ли способ сохранить порядок происхождения, если я обновлю записи, как объяснено?