我现在正在寻找解决当前问题的最佳方法:我有两个模型,Product和Photo。照片通过 has_many 与产品相关联。当用户创建新产品时,她还可以使用嵌套表单(carrierwave、jquery)添加照片,然后将实际产品保存到数据库中。由于该产品尚不存在,我正在寻找以正确关联将照片保存到数据库的最佳方法。
我想到了几个方法:
1)当用户点击“新产品”时,我立即将产品保存到数据库中,并使用正确的 ID 并在用户点击“取消”后再次删除它。这样我就不得不对我的验证进行一些处理,而是做一些客户端验证。如果用户在产品创建期间关闭浏览器窗口可能会出现问题 - 产品将保留在数据库中。
2)我将它保存到数据库并以某种方式标记它,使用奇怪的 ID 或 is_temp 字段或类似的东西。这样我可以在每次用户登录时清理数据库。“Cance”立即删除该东西(以及所有相关照片)。
3)在内存中创建一个临时ID,暂时不要保存产品。我可以保存与此临时 ID 关联的照片,当用户点击最终保存时,我将 product_id 更改为新的真实产品 ID
到目前为止,对我来说,解决方案 2 看起来是最好和最干净的方法,这有点类似于 Ryan Bates 的 Guest Record Railscast,但也许我在这里遗漏了一些东西,还有一种更简单的方法。任何其他解决方案都受到高度赞赏。
非常感谢!