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”,找到,修改然后单独保存它们。
有没有一种简单的方法可以做到这一点,或者我应该怎么做呢?
谢谢!
答案 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。