Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails和数据库:如果存在,则查找条目,否则创建_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails和数据库:如果存在,则查找条目,否则创建

Ruby on rails Rails和数据库:如果存在,则查找条目,否则创建,ruby-on-rails,Ruby On Rails,我在数据库中有一个具有以下列的表: 身份证 包装1_名称 包装2_名称 在我的\u form.html.erb中有两个文件字段: <%= form_for(@submission, :html => { :multipart => true }) do |f| %> <%= f.fields_for :uploads do |upload| %> <%= upload.file_field :package1 %> <%= uplo

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

  • 身份证
  • 包装1_名称
  • 包装2_名称
  • 在我的
    \u 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 %>
    

    只有在params[:submission][:id]中id为的记录不存在时,才会创建提交

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

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

    为什么每次单击“提交”都会立即创建两个条目?它不应该简单地创建一个具有两个属性的条目吗?@abhir,对不起我的英语不好,我的意思是我单击提交一次,它会在数据库中创建两个条目。为什么你有上传的
    字段?您说过它们是实例中的列,不是关联。@mathieugagne,我有一个嵌套模型,
    submission
    有许多
    upload
    谢谢您的回答!实际上,我也在想为什么每次提交时它都会调用
    create
    方法两次,我使用一些文件上传插件来处理文件上传,所以它们可能会以某种方式改变应用程序插入的方式
    def create
       @submission = Submission.where(:id => params[:submission][:id]).first_or_create(params[:submission])
    end