我在rails上使用ruby并且在我的网站上有用户可以点击保存的东西,并且它们被重定向到同时具有登录和注册的页面,以便用户可以继续使用任一选项并保存内容。创建一个显示正确的用户验证错误的问题,b / c我需要使用redirect_to users / new来传递带有用户保存的对象id的params,如果我使用render:new,则错误是显示但对象ID丢失。有人有任何解决方案吗?
答案 0 :(得分:2)
将原始项目ID存储在会话中,继续正常的登录/注册过程,完成后,如果会话中有保存项目,则重定向到处理保存的操作(现在可以抓取项目)来自会话的id并继续)。
答案 1 :(得分:0)
“出于好奇,在会话中保存对象本身有什么问题?这样我就不必再执行第二次数据库查找来再次查找对象了。” --TenJack (这应该是一个新的StackOverflow问题)
在会话中保存项目是一件坏事 - 因为您迁移模型对象的那一刻(例如,添加列或类似的东西),会话中的数据现在不再是模型类型的有效对象。例如,它仍将具有旧的属性列表而不是新的...并且它将显示为无效对象。
这就是为什么最好只存储id - 因为你将从db中获取一个新的,正确实例化的对象。