0

在我的 Rails 应用程序中,用户可以创建提交,每个提交都有标题和内容。现在在我的提交控制器的创建操作中,它将检查数据库中是否有任何提交与正在创建的新提交的标题相匹配。如果数据库中存在具有相同标题的数据库,它将更新数据库中已有的数据库,而不是创建另一个。

我想继续这样做,但是,如果 :title 属性的值为 NULL(也就是他们没有输入任何内容),我希望它继续创建一个新实例,不管是否有另一个数据库中的实例,其 :title 值为 NULL。

这是我的尝试,它不起作用:

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 的提交实例均已创建,并且不更新具有相同标题值的另一个先前实例?

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 回答