0

私の Rails アプリでは、ユーザーは提出物を作成でき、各提出物にはタイトルとコンテンツがあります。現在、提出物コントローラーの作成アクションで、作成中の新しい提出物のタイトルと一致する提出物がデータベースにあるかどうかを確認します。データベースに同じタイトルのタイトルがある場合、別のタイトルを作成する代わりに、データベースに既にあるものを更新します。

私はそれを続けたいと思っていますが、 :title 属性の値が NULL の場合 (つまり、何も入力されていない場合)、先に進み、別のインスタンスがあるかどうかに関係なく、新しいインスタンスを作成したいと思います。 NULL の :title 値を持つデータベース内のインスタンス。

これが私の試みですが、うまくいきません:

def create 

    ajax_title = params[:title]
    ajax_content = params[:content]
    ajax_folder = params[:folder_id]
    ajax_parent = params[:parent_id]
    ajax_children = Array(params[:children])

    @submissions = Submission.where(title: ajax_title)

    if @submissions.empty?
    @submission = Submission.create({title: ajax_title, content: ajax_content, user_id: current_user.id, folder_id: ajax_folder, parent_id: ajax_parent, children: ajax_children})
    else
    if @submissions.blank?
      @submission = Submission.create({title: ajax_title, content: ajax_content, user_id: current_user.id, folder_id: ajax_folder, parent_id: ajax_parent, children: ajax_children})
    else
      @submissions[0].content = ajax_content
      @submissions[0].save
    end
    end
end

:title 値が NULL のサブミッション インスタンスがそれぞれ作成され、同じ title 値を持つ以前の別のインスタンスが更新されていないことを確認するにはどうすればよいですか?

4

1 に答える 1

1

これはそれを行う必要があります:

ajax_title = params[:title]
ajax_content = params[:content]
ajax_folder = params[:folder_id]
ajax_parent = params[:parent_id]
ajax_children = Array(params[:children])

@submission = Submission.find_by_title(ajax_title)

if ajax_title && @submission
    @submission.content = ajax_content
    @submission.save
else
    @submission = Submission.create(
        :title=>ajax_title,
        :content=>ajax_content, 
        :user_id=>current_user.id, 
        :folder_id=>ajax_folder,
        :parent_id=>ajax_parent, 
        :children=>ajax_children,
    )
end
于 2013-09-27T03:34:03.970 に答える