【发布时间】:2011-03-29 04:48:12
【问题描述】:
在我的应用中使用 activerecord reload 命令似乎在调用时使用了缓存数据。
我可以通过执行以下操作在调试器中进行复制。
u = User.find(1)
u.first_name
#outputs bob
# manually change first_name for record 1 to jim with PGadmin or with rails console
u.reload
u.valid?
#outputs true
u.first_name
#outputs bob
#if i do this again
u = User.find(1)
#old data again
u.first_name
#outputs bob
#if i load data this way
u = User.where('id = 1').first
#new data
u.first_name
#outputs jim
在运行 reload 后查看我的日志文件时,它会打印出来
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE ("users"."id" = 1) LIMIT 1
看来是在使用缓存
我的环境:Rails 3.0.3、Ruby 1.8.7、Ubuntu 10.04、PostgreSQL 8.4
【问题讨论】:
-
请提供更详细的示例,说明如何手动更改数据库行,并提供 w.valid? 的输出。
-
改名后记得保存记录吗?
-
是的,记录已保存。如果我重新加载页面,它会获取更改。
标签: ruby-on-rails activerecord