У меня проблема с внесением изменений в объект внутри другой модели, а также внутри модели объекта. У меня есть следующие модели:
class Foo < ActiveRecord::Base
has_many :bars
def do_something
self.value -= 1
# Complicated code doing other things to this Foo
bars[0].do_other
save!
end
end
class Bar < ActiveRecord::Base
belongs_to :foo
def do_other
foo.value += 2
foo.save!
end
end
Если у меня есть объект Foo
с value
, установленным в 1, и вызовом do_something
для него, я могу видеть из своей базы данных следующие две операции:
Foo Update (0.0s) UPDATE "foos" SET "value" = 2 WHERE "id" = 1
Foo Update (0.0s) UPDATE "foos" SET "value" = 0 WHERE "id" = 1
... так что do_something предположительно кэширует объект self
. Могу ли я избежать этого, кроме как перемещать save!
с?