我正在设计一个项目管理应用程序,我希望我的用户能够‘叉’一个现有的项目在数据库中。例如,@user1将创建一个项目,而@user2可能希望修改该项目,因此@user2将单击‘叉’的一个选项。
当出现这种情况时,除了他/她将能够修改@user2的内容外,现有的项目将在很大程度上与重复。
我在想嵌套属性可能会起作用,但我不认为这是正确的方法。
有什么建议吗?
发布于 2014-05-14 05:14:11
您应该使用ActiveRecord::Core#dup方法。
从这一页:
未分配id的被欺骗对象被视为新记录。请注意,这是一个“浅”副本,因为它只复制对象的属性,而不是其关联。“深度”副本的范围是特定于应用程序的,因此由应用程序根据其需要实现。dup方法不保留时间戳(创建的“更新的”)_(在“上”)。
简而言之,@project.dup将构建一个新的Project对象,该对象的参数除- id、created_at、updated_at字段外都与@project相同。@user2可以对这个新构建的对象进行修改,然后对其进行save。这模仿了fork特性。
https://stackoverflow.com/questions/23645805
复制相似问题