如果title为空(null),则创建模型实例?

时间:2013-09-27 03:14:34

标签: ruby-on-rails ruby

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

我想继续这样做,但是,如果:title属性的值为NULL(也就是说他们没有输入任何东西),我希望它继续创建一个新实例REGARDLESS如果db中有另一个实例,其标题值为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

如何检查并确保每个都创建一个标题值为NULL的提交实例,而不是更新另一个具有相同标题值的提交实例?

1 个答案:

答案 0 :(得分: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