2

我正在使用 ruby​​ on rails 并在我的网站上有用户可以单击以保存的内容,它们被重定向到具有登录和注册的页面,以便用户可以继续使用任一选项并保存内容。为显示正确的用户验证错误创建了一个问题,b / c我需要使用redirect_to users / new来传递带有用户正在保存的对象ID的参数,如果我使用render:new,错误是显示但对象 ID 丢失。有人对此有任何解决方案吗?

4

2 回答 2

2

将原始项目 ID 存储在会话中,继续您的正常登录/注册过程,完成后,如果会话中有保存项目,则重定向到处理保存的操作(它现在可以从会话并继续)。

于 2010-02-15T08:31:25.717 回答
0

“出于好奇,在会话中保存对象本身有什么问题?这样我就不必执行第二次数据库查找来再次找到对象。” --TenJack(这应该是一个新的 StackOverflow 问题)

在会话中保存项目是一件坏事 - 因为在您迁移模型对象的那一刻(例如添加列或类似的东西),会话中的数据现在不再是模型类型的有效对象。例如,它仍然有旧的属性列表,而不是新的……它会显示为无效对象。

这就是为什么最好只存储 id - 因为您将从数据库中获取一个新的、正确实例化的对象。

于 2010-09-16T14:38:08.133 回答