制作多个记录的副本

时间:2011-02-13 13:59:05

标签: ruby-on-rails

Rails 2.3.5

我有一个带有'directory_id'和'folder_id'外键的联系人模型。

在索引页面上,我有一个表单来选择多个联系人,以便将这些联系人的副本复制到另一个目录/文件夹。提交表单时,存在以下参数(它们都是联系人ID和目录和文件夹外键):

> "selected_contacts"=>["9", "14", "10", "13", "12", "11"]
> "copy_to_directory"=>"66"  (will be directory_id in Contacts)
> "copy_to_folder"=>"59"     (will be folder_id in Contacts)

所以,我需要查找所有联系人记录,更改directory_id和folder_id,并将其保存为新记录(副本)。

据我所知,clone(对于带有空白id字段的副本)仅适用于单个记录,而save仅适用于单个记录。我现在唯一能想到的就是遍历每个“slected_contacts”,找到,修改然后单独保存它们。

有没有一种简单的方法可以做到这一点,或者我应该怎么做呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

在一个语句中加载所有选定的联系人可以这样做:

selected_contacts = Contacts.find ["9", "14", "10", "13", "12", "11"]

对于克隆这些联系人并保存新副本,我认为没有比实现循环更简单的方法了。

selected_contacts.each do |contact|
    contact_clone = contact.clone
    # manipulate contact_clone
    contact_clone.save
end

如果你的情况不够有效,你可能不得不编写自定义SQL。