По сути, если вы работаете только в памяти, вам не нужно использовать reload
. Если вы идете прямо в базу данных, вам понадобится.
Итак, в общем, что-то вроде:
@user = User.create!(:name => "John Doe", :age => 100, :login => "jdoe")
assert_equal "John Doe", @user.name
Это будет прекрасно работать, потому что все в этом объекте находится в памяти.
Теперь, допустим, вы сделали что-то вроде:
@user.pictures << Picture.create!(:locn => "/images/my_image.jpg")
assert @user.contains_picture(/images/"my_image.jpg")
и этот метод contains_picture
был определен в user.rb
как:
def contains_picture(path)
User.includes(:picture).where("pictures.locn = ?", path)
end
Поскольку этот метод отправляется непосредственно в базу данных, он потерпит неудачу, поскольку не найдет эту картинку. Вместо этого, после добавления рисунка в коллекцию .pictures
, вам нужно будет сделать @user.save!
Итак, это зависит от того, что происходит с объектом и как выглядят используемые методы, и это скажет вам, нужно ли вам reload
или нет.