0

次の列を持つデータベースにテーブルがあります。

  1. ID
  2. package1_name
  3. package2_name

そして、私file_fieldは my に2つのを持っています_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 %>

送信ボタンをクリックするたびに、データベースに 2 つの個別のエントリが作成されます。

の動作を変更して、create存在する場合はデータベース エントリを見つけ、それ以外の場合は新しいエントリを作成する方法はありますか?

私はこれを試しましたが、うまくいきません:

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

1 に答える 1

1

これは、params [:submission] [:id]にIDを持つレコードが存在しない場合にのみ送信を作成します。

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

ただし、フォームがcreateメソッドを2回呼び出すのは正しくないようです。あなたがこれをする必要があるのは奇妙に思えます。とにかく、その振る舞いが正しければ、これがお役に立てば幸いです。

于 2013-02-19T22:29:16.373 に答える