1

在我的控制器中,我有一个 @attach 对象,当我检查它时,它的值为

[#<MessageAddlAttachment id: 80, reminder_id: 112, msg_attachment_file_name: "24.png", msg_attachment_content_type: "image/png", msg_attachment_file_size: 272368, created_at: "2013-10-10 12:04:37", updated_at: "2013-10-10 12:04:37">, #<MessageAddlAttachment id: 81, reminder_id: 112, msg_attachment_file_name: "37.png", msg_attachment_content_type: "image/png", msg_attachment_file_size: 333986, created_at: "2013-10-10 12:04:37", updated_at: "2013-10-10 12:04:37">]

所以现在经过一些操作,我需要在这个 MessageAddlAttachment 表中创建一个具有不同 id 的条目。我怎样才能实现它。我试过 dup 但它会有相同的 ID。请帮忙

4

2 回答 2

2

dup是您在 rails 4 中的朋友。它将创建一个副本但删除 id 值:

u = User.first
=> #<User id: 1, ...>
u.dup
=> #<User id: nil, ...>
u.dup.save
   (0.2ms)  begin transaction
...
于 2013-10-10T13:30:09.150 回答
1

从 rails 3.2 或 3.1 开始,您想要使用dup. 在此之前,您应该clone改用。这将为您提供 id 字段的新值;您可能还需要注意您的 created_at 和 updated_at 字段会发生什么。

另一个需要注意的问题是,如果您有任何带有验证的日期字段表明它们必须在“今天的日期”之后,它们可能在保存原始记录时有效,但在保存新记录时无效。你如何解决这个问题将取决于你的情况;您可能希望在克隆时完全禁用验证,或调整新记录中的值。

于 2013-10-10T13:48:32.630 回答