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
\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