在我的控制器中,我有一个@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">]
所以现在经过一些操作后,我需要在这个带有不同id的MessageAddlAttachment表中创建一个条目。我怎样才能实现它。我尝试过dup,但它会有相同的ID。请帮忙
答案 0 :(得分:2)
dup
是你在rails 4中的朋友。它会创建一个副本但删除了id值:
u = User.first
=> #<User id: 1, ...>
u.dup
=> #<User id: nil, ...>
u.dup.save
(0.2ms) begin transaction
...
答案 1 :(得分:1)
启动rails 3.2或3.1,您想使用dup
。在此之前,您应该使用clone
代替。这将为id字段提供新值;你可能还想关注你的created_at和updated_at字段会发生什么。
需要注意的另一个问题是,如果您的任何日期字段的验证表明它们必须在“今天的日期”之后,则它们可能在保存原始记录时有效,但在保存新记录时则无效。你如何解决这个问题取决于你的情况;您可能希望在克隆时完全禁用验证,或调整新记录中的值。