在csv导入上为has_and_belongs_to_many关系设置id

时间:2015-10-03 07:27:26

标签: ruby-on-rails ruby csv has-and-belongs-to-many csv-import

我的应用中有两个模型:list.rbcontacts.rb,它们之间有has_and_belongs_to_many个关系。 我的contacts_controller.rb中有以下方法:

def import
  Contact.import(params[:file])
  redirect_to contacts_path, notice: "Contacts were imported."
end

我在List操作中创建list#create后调用他的方法。我如何set/input list_id进入上面的导入方法,其中记录是通过csv文件创建的?

谢谢!

1 个答案:

答案 0 :(得分:0)

首先需要获取列表,就像在show方法中一样。确保import是成员路由。

@list = List.find(params[:id])

然后,您需要修改import方法,它会为您的列表选择第二个参数。

def Contact.import_for_list(file, list)
   # loop over csv lines
     # for each line you create a contact element
     # and then add the new contact element to the list
     list.contacts << newly_created_contact

     # or you create the contact from the list object
     list.contacts.build(....)
   # depending how you created the objects you need to save them explicitly
end

最后,您调用修改后的方法

def import
  @list = List.find(params[:id])
  Contact.import_for_list(params[:file], @list)
  redirect_to contacts_path, notice: "Contacts were imported."
end