Ruby on rails pry中未反映Db变化
我试图测试我的代码的线程安全性,我得到了一个奇怪的行为——对db的更改(通过psql或rails控制台进行)没有反映在pry中 在pry中:Ruby on rails pry中未反映Db变化,ruby-on-rails,postgresql,pry,Ruby On Rails,Postgresql,Pry,我试图测试我的代码的线程安全性,我得到了一个奇怪的行为——对db的更改(通过psql或rails控制台进行)没有反映在pry中 在pry中: pry > MyObject.first.name => "Name" pry > MyObject.first.update( name: "Pry" ) => true pry > MyObject.first.name => "Pry" 在控制台中: console > MyObject.first.na
pry > MyObject.first.name
=> "Name"
pry > MyObject.first.update( name: "Pry" )
=> true
pry > MyObject.first.name
=> "Pry"
在控制台中:
console > MyObject.first.name
=> "Name"
console > MyObject.first.update( name: "Console" )
=> true
console > MyObject.first.name
=> "Console"
console > MyObject.first.name
=> "Pry" # the change IS reflected
我使用psql验证了名称是“Console”
现在在pry:
pry > MyObject.first.name
=> "Name" # the change is NOT reflected!
如果我做相反的方向,在pry中进行更改,这些更改会被反映出来
在pry中:
pry > MyObject.first.name
=> "Name"
pry > MyObject.first.update( name: "Pry" )
=> true
pry > MyObject.first.name
=> "Pry"
在控制台中:
console > MyObject.first.name
=> "Name"
console > MyObject.first.update( name: "Console" )
=> true
console > MyObject.first.name
=> "Console"
console > MyObject.first.name
=> "Pry" # the change IS reflected
我使用psql验证了名称是“Pry”
会发生什么事?模型不应该总是从数据库加载最新的属性吗 不要先使用
,
,然后使用ID实际加载对象,以检查它是否实际相同。还要检查启动控制台时是否没有创建其他对象。MyObject.find(id)会给出相同的结果