Rails和数据库:如果存在,则查找条目

时间:2013-02-19 22:04:57

标签: ruby-on-rails

我在数据库中有一个包含以下列的表:

  
      
  1. ID
  2.   
  3. package1_name
  4.   
  5. package2_name
  6.   

我的file_field中有两个_form.html.erb

<%= 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

1 个答案:

答案 0 :(得分:1)

如果不存在id为para:[:submission] [:id]的记录,则只会创建提交。

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

但是,我和abhir一样,表单调用create方法两次似乎不对。你需要做这件事似乎很奇怪。无论如何,如果行为是正确的,我希望这会有所帮助。