2013-02-19 55 views
0

我在数据库中的表有以下几列找到入口我在我的_form.html.erb中有两个file_field s:Rails和数据库:如果存在其他创建

<%= form_for(@submission, :html => { :multipart => true }) do |f| %> 
<%= f.fields_for :uploads do |upload| %> 
    <%= upload.file_field :package1 %> 
    <%= upload.file_field :package2 %> 
<% end %> 
<% end %> 

每次我点击提交按钮,它会在数据库中创建两个单独的条目。

有没有办法改变create的行为,以便它能够在存在的情况下找到数据库条目,否则创建一个新条目?

我都试过,但它不工作:[:投稿] [:编号]不存在

def create 
    @submission = Submission.find_or_create_by_id(params[:submission]) 
    ... 
end 
+0

为什么每次点击提交立即创建两个条目?它不应该简单地用两个属性':package1'和':package2'创建一个条目吗? – abhir 2013-02-19 22:14:54

+0

@abhir,对不起我的英语不好,我的意思是我点击提交一次,它会在数据库中创建两个条目。 – 2013-02-19 22:27:49

+0

为什么你有'fields_for:uploads'?你说他们是你的实例的列,而不是关联。 – mathieugagne 2013-02-19 22:30:55

回答

1

如果在PARAMS的ID记录这只会创建提交。

def create 
    @submission = Submission.where(:id => params[:submission][:id]).first_or_create(params[:submission]) 
end 

但是,我与abhir窗体调用create方法两次似乎不正确。这似乎很奇怪,你需要这样做。无论如何,如果这种行为是正确的,我希望这会有所帮助。

+0

谢谢你的答案!其实我也想知道为什么每次提交时都会调用'create'方法两次,我正在使用一些文件上传插件来处理文件上传,所以它们可能会以某种方式改变应用程序插入的方式 – 2013-02-19 22:53:50