1

这是我遇到过的最奇怪的错误

我在我的 Rails 应用程序中使用 Best In Place gem 以允许就地编辑页面标题。就地编辑工作,新标题在数据库中更改,但是当我刷新页面时,它恢复为旧标题。我什至不明白它从哪里获得旧标题,因为它不再存储在数据库中。

创建页面时,会自动为其赋予标题“无标题页面”。当我将标题更改为“标题”并使用 postgresql 管理程序查看数据库中页面的行时,它确实更改为“标题”。但是当我在 Rails 控制台中运行 Page.find(1).title 时,它​​返回“Untitled Page”

这怎么可能?!

4

2 回答 2

0

您的应用程序是否在生产模式下运行?

PG 响应和控制台响应不能不同,除非它们在两个不同的数据库上执行。

  1. 检查您的数据库配置是否使用与您在浏览 PG 时手动连接的数据库相同的数据库。

  2. 确保在运行 rails 控制台时指定环境(以防您的默认设置不是您正在运行的环境): $ rails c production $ rails c development

  3. 如果以上两种方法都没有帮助,请发布此操作的日志片段。可能是事务正在回滚。如果您使用不带“!”的 .save 或 .update_attribute 那么这不会引发错误。但这不太可能,因为您说数据库已更新数据。

于 2012-11-19T06:41:26.790 回答
0

修复。原因是我使用 after_initialize 来设置自动属性,只要 ActiveRecord 对象初始化,就会调用该属性。我真正想要的是after_create。我使用 after_create 调用一个名为 set_properties 的函数,在其中设置 self.title 之类的内容,然后在函数结束时调用 self.save,这是将属性保存到数据库中所必需的。

于 2012-11-19T07:31:19.787 回答