【发布时间】:2011-12-06 15:52:15
【问题描述】:
我在使用 PostgreSQL 时遇到了最奇怪的问题 - 有人可以帮忙吗?
我的应用程序允许用户创建对象,然后将其列在页面上。我按照 Ryan Bates Railscasts tutorial 让它们可排序,这在我的系统上运行良好。
所以在本地,使用这个代码:
def sort
params[:faqs].each_with_index do |id, index|
Object.update_all(['position=?', index+1], ['id=?', id])
end
render :nothing => true
end
我在 POST 请求中得到这个输出:
12 月 6 日星期二开始为 127.0.0.1 发布“/users/sort_object” 16:43:52 +0100 2011 ObjectController 处理#sort as JS
参数: {"authenticity_token"=>"#####################", “_”=>“”,“常见问题”=>[“5”,“1389”,“11”,“1350”,“147”,“849”,“932”, “1260”、“23”、“10”、“1261”]} AREL (1.8ms) 更新“对象”集 position=1 WHERE (id='5') AREL (1.2ms) UPDATE "objects" SET position=2 WHERE (id='1389') AREL (2.9ms) UPDATE "objects" SET position=3 WHERE (id='11') AREL (3.3ms) UPDATE "objects" SET position=4 WHERE (id='1350') AREL (1.4ms) UPDATE "objects" SET position=5 WHERE (id='147') AREL (1.5ms) UPDATE "objects" SET position=6 WHERE (id='849') AREL (1.2ms) UPDATE "objects" SET position=7 WHERE (id='932') AREL (1.5ms) UPDATE "objects" SET position=8 WHERE (id='1260') AREL (1.5ms) UPDATE "objects" SET position=9 WHERE (id='23') AREL (2.0ms) UPDATE "objects" SET position=10 WHERE (id='10') AREL (1.9ms) UPDATE "objects" SET position=11 WHERE (id='1261') 渲染文本模板(0.0ms)
我已经在本地对多个用户进行了测试,并且更改一个用户的顺序似乎不会干扰其他用户的对象 - 如您所见,数据库仅插入为该用户列出的对象 ID 的位置。
但是,当我查看存储在 Heroku 上的数据库时,发生了一些奇怪的事情。我最终得到的用户有多个位置 = 1 的对象,这似乎是由其他用户改变他们的位置引起的。
有人可以帮忙吗?有没有办法可以调试这个(我在 Heroku 上没有专用服务器,所以我不能流式传输日志)?谁知道是什么原因造成的?
希望这很清楚,如果没有,请大喊...
【问题讨论】:
-
您可以在 CLI 中跟踪日志,heroku logs -f 尽管您可能需要提高日志记录级别并升级到扩展日志记录(它是免费的)以启用跟踪。
-
这只是给了我服务器请求可悲的是,它不允许我像 CLI 那样看到实际发布到数据库的内容?还是我错过了什么?
标签: jquery ruby-on-rails postgresql heroku