2011-09-18 49 views
1

我一直在努力工作了一段时间,我似乎无法弄清楚如何做到这一点。我希望request.env中有一个值可以使用,或者一些显而易见的方法来覆盖唯一性验证程序来完成此操作,但我一直无法获得它。保持新的对象失败唯一性验证时发现的ID

因此,当唯一性验证程序失败时,我希望能够在db中使用重复信息捕获记录的标识,以便我可以使用它。有没有人做过这个?

+0

所有唯一性验证程序所做的是验证唯一性; AFAIK如果你想挂起你需要编写自定义验证器的行为。不过,由于您没有真正验证,因此您可能更容易不将其作为验证 - 您将根据是否找到某个内容来执行查找并更改流程。 –

+0

感谢您的快速响应。我只是想,也许如果我在盒子外面思考,只是不使用验证,它会更容易完成。 – loucal

回答

0

改为使用find_or_create_by代替验证器。如果它已经存在,它将使用旧对象,或者如果它不存在,则创建一个新对象 - 并且它为您完成所有工作!

希望这会有所帮助!

PS:这里是Official Rails Docs - 你想要的部分是“基于动态属性的查找器”,有一些方法。我只是认为第一个链接更有用...

+0

非常感谢Xavier!我最终在控制器中使用普通的旧find_by实现它,并分两步完成它,但是你正确的find_or_create_by正是我所期待的。这是有点草率,因为这在我的控制器中被视为'业务逻辑',但我认为我可以解决如何将其应用到模型中...... – loucal

相关问题