这是我遇到过的最奇怪的错误
我在我的Rails应用程序中使用Best In Place gem,以便允许就地编辑页面标题。就地编辑工作,新标题在数据库中更改,但当我刷新页面时,它将恢复为旧标题。我甚至不知道它从哪里获得旧标题,因为它不再存储在数据库中。
创建页面时,会自动为其标题为“无标题页面”。当我将标题更改为“标题”,并使用postgresql管理程序查看数据库中页面的行时,确实会更改为“标题”。但是当我在rails控制台中运行Page.find(1).title时,它返回“Untitled Page”
怎么会这样?!
答案 0 :(得分:0)
您的应用是否在生产模式下运行?
PG响应和控制台响应不能不同,除非它们在两个不同的数据库上执行。
检查您的数据库配置是否使用与浏览PG时手动连接的数据库相同的数据库。
确保在运行rails控制台时指定环境(如果您的默认设置不是您正在运行的): $ rails c production $ rails c development
如果上述两项措施都没有帮助,请发布此操作的日志片段。可能是该事务正在回滚。如果您使用的是.save或.update_attribute而没有“!”那么这不会引发错误。但这很不可能,因为您说数据库已更新数据。
答案 1 :(得分:0)
修正了它。原因是我使用after_initialize来设置自动属性,每当ActiveRecord对象被初始化时都会调用它们。我真正想要的是after_create。我使用after_create来调用一个名为set_properties的函数,我在其中设置self.title之类的东西,然后在函数的末尾,我调用self.save,这是将属性保存到DB中所必需的。