2015-08-14 15 views
0

我希望能够上传事件邮件的收件人CSV。我有上传部分工作,我的应用程序正在将数据保存到数据库,但是,我需要添加两个字段,我不希望用户知道。追加到在rails中读取的文件

csv_text = File.read(params[:file].path) 
    csv = CSV.parse(csv_text, :headers => true) 
    csv.each do |row| 
     Recipient.create!(row.to_hash) 
    end 

我想补充的:事项标识和:mailing_id,我不希望用户知道这一点,所以我不希望他们把它放在CSV时,他们上传。这些细节正在通过请求:

Request 

Parameters: 

{"utf8"=>"✓", 
"authenticity_token"=>"QvKQeTVQb1UJJHh4ulkF8T0r24QrpIuMPP4NXFOYJhM=", 
"file"=>#<ActionDispatch::Http::UploadedFile:0x007fbd4137fdb0 @tempfile=#<Tempfile:/var/folders/js/39l33x3d2vd06c_v7hbymtw474d6cc/T/RackMultipart20150814-15094-11f1q3v>, 
@original_filename="import_test.csv", 
@content_type="text/csv", 
@headers="Content-Disposition: form-data; name=\"file\"; filename=\"import_test.csv\"\r\nContent-Type: text/csv\r\n">, 
"commit"=>"Save changes", 
"event_id"=>"1", 
"mailing_id"=>"1"} 

如何确保将这两个字段包含在将用户插入数据库时​​?

回答

3

什么如下:

csv_text = File.read(params[:file].path) 
csv = CSV.parse(csv_text, :headers => true) 
csv.each do |row| 
    Recipient.create!(row.to_hash.merge(mailing_id: params[:mailing_id].to_i, event_id: params[:event_id].to_i) 
end 
+0

谢谢!这工作完美! – ajk4550