从rails 2.3中的activerecord查询对象中提取属性值

时间:2013-10-10 13:23:56

标签: ruby-on-rails paperclip ruby-on-rails-2

在我的控制器中,我有一个@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。请帮忙

2 个答案:

答案 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字段会发生什么。

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